C语言中的一些常见错误

1,当我们对void *类型的指针进行运算时,编译器会报告如下错误?

error C2036: 'void *' : unknown size

  答案与分析:

  在C语言中,所有的指针远算,例如+、—、*、/,都是将它所指向的对象的尺寸考虑进去的。例如‘char*’ 类型的指针加1,就是地址向后移动一个字节;而‘int*’类型指针加1,就是移动4个字节。但是,对于‘void*’型的指针呢?‘void *’指针在C标准中被规定可以强制转换成任何类型的指针而不会丢失数据,它的大小具体的编译器各不相同,也就是说,编译器也不知道void到底有多大,因此,无法对‘void*’类型的指针进行算术运算。如果你想让它的步进为1,则可以将void*转换成char*。

2,error C2143: syntax error : missing ';' before 'type'
 
    答案与分析;
    有时候会出现如上错误,但是我们检查那一行后,却发现并不缺少;号。那是什么原因呢?原因是我们把变量的定义放在了{}后面,只要把变量的定义放到{}前面去就可以了。这种错误只会出现在VC6.0编译C语言程序时会出现,在编译C++时没有这种错误。


3,char arr[12];
   strcpy(arr,NULL); 这个错误是致命的。因为NULL就是‘/0’,而arr是一个字符串,所以应该改成strcpy(arr,"");,这样就可以了。

你可能感兴趣的:(c,null,语言,编译器)