常见的简单笔试题却又要小心的题

来源:互联网 发布:博达软件 编辑:程序博客网 时间:2024/05/28 01:35


1:

#include <stdio.h>#include <string.h>int main(void) {     char a[]="123456789";    char *p = "123456789";    char a2[100] = "123456789";    printf("%d\n%d\n%d\n" ,sizeof(a),sizeof(p),sizeof(a2));printf("%d\n%d\n%d\n" ,strlen(a),strlen(p),strlen(a2));return 0;}

输出结果:

10
8     注意这里是求一个指针的大小
100
9        strlen都是以\0哨兵结尾
9
9


:2:


#include <stdio.h>#include <string.h>int main(void) {     char a=255;    a++;printf("%d\n" ,a);a++;printf("%d\n" ,a);return 0;}

输出结果:

0
1


3:

ifndef define endif作用

为了避免重复,不过不是避免重复声明,而是避免重复定义。通常而言,C的所有声明都是可以重复的,只要重复的声明完全相同就行。然而定义则不可以重复,就算是完全相同也不行,重复定义会导致编译错误。

多次包含可能会引来重复定义。比如a.h文件中包含了stdio.h和b.h,而b.h文件中包含了stdio.h,那么编译b.c文件时,stdio.h就被包含了两遍。我们熟知stdio.h头文件中有FILE类型搜索的定义,于是FILE被定义了两遍,会出现编译错误。在stdio.h头文件中用

原创粉丝点击