c语言细节(一)

来源:互联网 发布:今年最流行网络歌曲 编辑:程序博客网 时间:2024/04/28 22:01

1.用单引号括起来的字符代表一个整数,用双引号括起来的字符串代表一个指针,并且字符串的末尾会有一个额外的‘\0’。

         比如:char *p1 = '/'; //这是不对的, '/'并不是一个指针,而是代表一个常数。

                     char  *p2  = "hello";//正确,p2指向hello这个字符串中第一个字符,并且字符串后边隐含了一个'\0'.

2.数组越界,并不一定会导致程序崩溃,还可能是你所想不到的------死循环。

      比如:

int main(){    int i=0;    int arr[10];    for(i = 0; i<=10; i++)     {           printf("hello\n");           arr[i] = 0;    }return 0;}
 该程序就是一个死循环。当我们定义arr[10]时,内存中只会给它分配10个内存空间,下标为0到9,变量i的空间实际是在数组之后的位置。当i变到10时,我们所要赋值的arr[10]实际是i,即循环中i为10时,i的值又被变为0,一直循环。

 3.易错点:浮点数与零值的比较。(以下的a是float型)

  

if(a==0)     printf(".....");

if(a == 0.0)    ......
以上两段代码均不对。

 if(a >-exp && a < exp)

      ......

exp为允许的误差,一般用define宏定义给出。

4.数组长度求解。

   数组长度的求解并不能用strlen函数。

 strlen 函数用于求字符串长度或字符数组(有‘\0’)长度。

 而要求整型数组或其他类型数组长度时,用 sizeof(数组名)/ sizeof(数组中的某一元素)。

2 0
原创粉丝点击