全局变量问题
全局变量是公用的它们的值可以供各函数使用如果在一个函数中改变了它们的值在其他函数中也可以使用这个已改变的值如果在同一个源文件中外部变量和全局变量同名则在局部变量的作用范围...
全局变量是公用的 它们的值可以供各函数使用 如果在一个函数中 改变了它们的值 在其他函数中也可以使用这个已改变的值
如果在同一个源文件中 外部变量和全局变量同名 则在局部变量的作用范围内 外部变量被“屏蔽” 即它不起作用
这两句话是从谭浩强的C语言上 抄下来的 但我觉得这两句话本身就有矛盾 希望高人指点一下 展开
如果在同一个源文件中 外部变量和全局变量同名 则在局部变量的作用范围内 外部变量被“屏蔽” 即它不起作用
这两句话是从谭浩强的C语言上 抄下来的 但我觉得这两句话本身就有矛盾 希望高人指点一下 展开
展开全部
是不矛盾的,第二句话你陷入了一个误区,局部变量和全局变量即使同名,他们也表示两个不同的变量。所以当你对局部变量操作时,跟全局变量一点关系都没有。
第一句话讲的是对全局变量在任意地方进行操作,都可以改变其值,但你如果操作的不是全局变量,而只是一个名字和全局变量一样的局部变量,当然全局变量的值不会改变啦
举个例子你就懂了;
int a = 1;
void main()
{a =2;}
表示全局变量a为1;你在函数中把它改成了2;证明第一句话是正确的。
int a = 1;
void main()
{
int a = 2;
}
表示全局变量a为1,你在主函数里又定义了另一个局部变量,它的名字也是a,它的值为2,但此时全局变量a的值还是1;这是两个不同的变量。
第一句话讲的是对全局变量在任意地方进行操作,都可以改变其值,但你如果操作的不是全局变量,而只是一个名字和全局变量一样的局部变量,当然全局变量的值不会改变啦
举个例子你就懂了;
int a = 1;
void main()
{a =2;}
表示全局变量a为1;你在函数中把它改成了2;证明第一句话是正确的。
int a = 1;
void main()
{
int a = 2;
}
表示全局变量a为1,你在主函数里又定义了另一个局部变量,它的名字也是a,它的值为2,但此时全局变量a的值还是1;这是两个不同的变量。
展开全部
有什么矛盾的
第一条说的是在用一个源文件内 各个函数可以改变这个源文件的 全局变量值
第二条说的 外部变量 和 全局变量同名
int a; // 全局变量
void fun(int a)
{
a = 1; // 这里的修改只对当前函数内部有效,不影响全局变量a的值
}
第一条说的是在用一个源文件内 各个函数可以改变这个源文件的 全局变量值
第二条说的 外部变量 和 全局变量同名
int a; // 全局变量
void fun(int a)
{
a = 1; // 这里的修改只对当前函数内部有效,不影响全局变量a的值
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不矛盾。
全局变量和局部变量同名的时候,对该名字的变量作出的修改只在局部变量有效。
例如
int a; // 全局变量
void fun(int a)
{
a = 1; // 这里的修改只对当前函数内部有效,不影响全局变量a的值
}
全局变量和局部变量同名的时候,对该名字的变量作出的修改只在局部变量有效。
例如
int a; // 全局变量
void fun(int a)
{
a = 1; // 这里的修改只对当前函数内部有效,不影响全局变量a的值
}
追问
举个简单的例子 如果变量名相同的话 全局变量就会被屏蔽 而转用局部变量 那么 又怎么可以做到“
全局变量是公用的 它们的值可以供各函数使用 如果在一个函数中 改变了它们的值 在其他函数中也可以使用这个已改变的值
”呢
追答
前提条件就是全局变量不与局部变量重名就可以了
例如
int globalIns = 0; // 全局变量
void fun1()
{
globalIns = 1;
}
void fun2()
{
globalIns = 2;
}
void main()
{
printf("%d\n", globalIns); // 输出0
fun1();
printf("%d\n", globalIns); // 输出1
fun2();
printf("%d\n", globalIns); // 输出2
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一句话是叙述全局变量的,全局变量指的是在同一个源文件中定义的变量。
第二句话中的外部变量是从其他文件引入的变量,不属于本源文件定义的,这个外部变量的名称可能与全局变量的名称同名,但是作用力不同,该源文件当然是首先判断这个变量名是本源文件定义的,而不是引入的,因此相当于全局变量把外部变量“屏蔽”。
第二句话中的外部变量是从其他文件引入的变量,不属于本源文件定义的,这个外部变量的名称可能与全局变量的名称同名,但是作用力不同,该源文件当然是首先判断这个变量名是本源文件定义的,而不是引入的,因此相当于全局变量把外部变量“屏蔽”。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不矛盾啊。要想在局部变量的作用范围内使用 外部变量也是可以的,需要使用一个运算符:
“ :: + 全局变量名 ”。在局部变量的作用范围内,若指明使用那个,默认使用局部变量哦!
“ :: + 全局变量名 ”。在局部变量的作用范围内,若指明使用那个,默认使用局部变量哦!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就近原则 函数内的局部变量只在函数内部起作用 全局变量整个项目都是可以使用的。这不矛盾的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不矛盾 当全局变量和局部变量同名冲突时,以局部变量为准。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询