入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

c语言细节(一)

创建时间:2016-03-19 投稿人: 浏览次数:429

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

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

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

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

      比如:

int main()
{
    int i=0;
    int arr[10];
    for(i = 0; i<=10; i++)
     {
           printf("hello
");
           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 函数用于求字符串长度或字符数组(有‘’)长度。

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

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。