码迷,mamicode.com
首页 > 编程语言 > 详细

c语言基础笔试坑点

时间:2020-02-07 16:52:43      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:动态分配   不能   hellip   解法   printf   define   环路   round   efi   

1、#define N 5 + 5

  求 k = N*N*5

  错误解法:10*10*5 = 500

  正解(重点:注意黄色部分):5 + 5 * 5 + 5 * 5 = 55

 

2、死锁的必要条件:

   1、相互排斥使用(资源独占)

     一个资源每次仅仅能给一个进程使用 

   2、不可强占(不可剥夺)
       资源申请者不能强行的从资源占有者手中夺取资源,资源仅仅能由占有者自愿释放 

   3、请求和保持(部分分配,占有申请)
     一个进程在申请新的资源的同一时候保持对原有资源的占有(仅仅有这样才是动态申请,动态分配) 

   4、循环等待
    存在一个进程等待队列
       {P1 , P2 , … , Pn},
       当中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路

 

3、地址偏移:

   int arr[6] = { 1,2,3,4,5,9};

   偏移一个地址:     

    int *p = (int *)( &arr[0]+1);

   整体偏移:

    int *p = (int *)( &arr + 1);

  printf("%d %d\n", *(arr+1), *( p ) );

 

4、陷阱(进制间转换)

  unsigned long *p2;
  p2 = ( unsigned long *)0x709000;
  printf("  p2 +5 = %p , p2 = %p\n", p2 +5, p2 );

  答案: 0x709028, 0x709000 

  

c语言基础笔试坑点

标签:动态分配   不能   hellip   解法   printf   define   环路   round   efi   

原文地址:https://www.cnblogs.com/dcli-blog/p/11735499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!