【求助】结构体全局变量赋值【已解决】
//此程序运行在Win7下的vc++6.0中#include <stdio.h>
#include <string.h>
struct tree
{
int x;
char s[20];
}t; //定义一个全局结构体变量t
void Func(struct tree t) //这里给出了函数变量t的定义,所以t是一个局部变量
{
t.x = 10;
strcpy(t.s,"computer");
} //定义一个函数,给t赋值
int main()
{
t.x =1;
strcpy(t.s, "Micro");
Func(t); //调用Funt()函数后应该修改了全局变量t的值,使t.x=10, t.s=computer
printf("%d,%s\n", t.x, t.s); //但此时却输出 t.x=1, t.s=Micro
}
===========================================================================================================
============================================================================================================
(先要谢谢heartnheart的帮助,帮我加深了对变量作用域的理解,谢谢啦)
【总结】:
1、首先在与main()平行的位置定义了一个“全局结构体变量”t, 它的作用域是整个程序的运行中都是起作用的,这一点是正确的,因为在main()中可以对t进行赋值
2、正如【heartnheart】所说,Func修改的不过是t的一个副本,这个副本在Func结束时就没了。
也就是说Func()函数中的变量虽然也叫t,但它是Func()函数自身所定义的变量,【其定义的位置在Func(uct tree t)处】因而是一个局部变量,并不是开始定义的“全局结构体变量t”。
3、Thanks heartnheart again. 在交流中进步真是非常快的啊。
[ 本帖最后由 frank2014 于 2010-2-21 17:30 编辑 ]