嵌入式技术
前两天有同学去做笔试题,遇到了这么一个题目:
sizeof(void);结果是多少?仔细一想,好像真没写过这样的代码。
void 也是C语言中常见的类型,一般用于修饰函数的类型。
比如函数不需要返回数据,就会在前面加上void。
void test();如果函数没有参数,形参括号里面也可以加上void。
void test(void);那 void 能不能用于定义变量?
void a;这个肯定不行,编译的时候就会当作语法错误处理。
printf("%lu ", sizeof(void));在 Ubuntu 环境下,强行输出:
sizeof(void)结果是1,而且在gcc的相关文档中也明确表示,sizeof允许使用在void和函数名上,结果返回1。
In GNU C, addition and subtraction operations are supported on pointers to void and on pointers to functions. This is done by treating the size of a void or of a function as 1. A consequence of this is that sizeof is also allowed on void and on function types, and returns 1. The option -Wpointer-arith requests a warning if these extensions are used.
char *addr = (char *)malloc(sizeof(char) * 128);前面我们讲过sizeof的很多用法,没想到它还是层出不穷,既然这样,我又想到了一个:
siezof('a');结果是多少?如果你知道答案,欢迎私信留言。
全部0条评论
快来发表一下你的评论吧 !