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


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头文件中用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值