手机版

C语言全局变量那些事儿(2)(2)

发布时间:2021-06-05   来源:未知    
字号:

从这个例子看不出有啥差别,只不过使用静态链接后,全局变量加载的地址有所改变,b和c的地址之间似乎相隔更远了些。不过这次编译器倒是给出了变量b的sizeof决议警告。

到此为止,有些人可能会对上面的例子嗤之以鼻,觉得这不过是列举了C语言的某些特性而已,算不上黑。有些人认为既然如此,对于一切全局变量要么用 static限死,要么定义同时初始化,杜绝弱符号,以便在编译时报错检测出来。只要小心地使用,C语言还是很完美的嘛~对于抱这样想法的人,我只想说, 请你在夜深人静的时候竖起耳朵仔细聆听,你很可能听到Dennis Richie在九泉之下邪恶的笑声——不,与其说是嘲笑,不如说是诅咒 第四个例子

/* foo.c */ #include <stdio.h> const struct { int a; int b; } b = { 3, 3 }; int main();

void foo()

{

b.a = 4;

b.b = 4;

printf("foo:\t(&b)=0x%08x\n\tsizeof(b)=%d\n

\tb.a=%d\n\tb.b=%d\n\tmain:0x%08x\n",

&b, sizeof b, b.a, b.b, main);

}

/* t1.c */

#include <stdio.h>

int b = 1;

int c = 1;

int main()

{

int count = 5;

while (count-- > 0) {

t2();

foo();

C语言全局变量那些事儿(2)(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)