- 论坛徽章:
- 0
|
这个问题是我刚刚在工作中碰到的。
比如下列小程序:
- /******************************************/
- #include <stdio.h>;
- static char *head;
- void change(char *);
- /******************************************/
- int
- main(void)
- {
- char name[] = "XiongBin Xiong.\n";
- char *p;
- p = name;
- head = p;
- printf("main()_1:%s",head);
- change(p);
- printf("main()_2:%s",head);
- exit(0);
- }
- /********************************************/
- void
- change(char *ptr)
- {
- char *q;
- q = ptr;
- q = q + 5;
- head = q;
- printf("change():%s",head);
- }
- /*******************************************/
复制代码
就一个文件,直接gcc编译,运行,输出结果为:
main()_1:XiongBin Xiong.
change():Bin Xiong.
main()_2:Bin Xiong.
当按照文中标示分为3个文件ourh.h,main.c,change.c使用make进行编译,运行,输出结果为:
main()_1:XiongBin Xiong.
change():Bin Xiong.
main()_2:XiongBin Xiong.
两者输出结果是不一样的。
我现在的认为是,程序段分开编译时,对于一个函数中全局变量的改变不能引起其他函数中该变量的值的变化。但到底里头是怎么一回事,到底有什么规则呢?我还不知道/。
有待学习。请各位高手指点。 |
|