我正在使用gcc并编写了一个小程序,如下所示:
#include<stdio.h>
void doing(){
char buf[4096 + 1];
printf("buf %d\n", buf);
printf("buf %f\n", buf);
printf("buf %d\n", (unsigned) buf);
printf("buf %s\n", buf+2);
printf("buf %d\n", buf+2);
}
int main (void){
char buf[4096 + 1];
printf("(unsigned) buf %d\n", (unsigned) buf);
doing();
printf("(unsigned) buf %d\n", (unsigned) buf);
return 0;
}
该程序的输出为:
(unsigned) buf 2268303
buf 2264159
buf 0.000000
buf 2264159
buf
buf 2264161
(unsigned) buf 2268303
我不知道为什么将2268303打印为整数,并且从2268303值中提取值,而一个函数将值设为2268303,而另一个函数则将值设为2264159
最佳答案
请阅读C基础知识。您将得到答案。
关于,
一个函数的值为2268303,另一个函数的值为2264159
可以看到,在main()中声明了一个char buf [],而在doing()中声明了另一个。两者都有不同的存储,并且都将在各自的范围内工作。 [阅读C语言中变量的范围]
关于c - 为什么下面的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15966065/