天天看点

C陷阱与缺陷

1.     <C陷阱与缺陷>

int num[10]={0} ;

  测试一下 num[0]  是否 等于 0[num]  。。。。。。

因为num是首地址   num+0 ==0+num

2.

其实C中只有一维数组   我们所说的 int a[3][4]   只是一个包含了三个元素  每个元素都是包含了四个整形值的一维数组  

3.int  num[10][10]  ;

 int *p=num[0]  ;

名为num的数组中 num[0]-num[9]表示的是 每个长度为10的一维数组 元素的首地址

4.     (* (void (*)())0)()  ;   //眨眼一看很难看懂 其实这就是一个函数指针的问题 调用 0地址的函数    考试的时候我以为是 数值的强制转换 郁闷了。。。。

5. a++++b  会报错   a++ + ++b 不会错 因为 词法分析器 会自左向右 结合字符来组成 运算符  a++后位一个数值 如果a++++那么 一个数值的自加是不是没意义呢

6.  a<<3+ 5    (a<<3)+5  意思完全不同  运算符优先级问题 

7.if

(

1

<

)   //这样编译器也能通过 

8.

继续阅读