大伙帮小弟我看看这里的全局变量为什么没有改叫
大伙帮我看看这里的全局变量为什么没有改叫?
test.getI()方法改变的是哪里的i呢?
------解决方案--------------------
在后面再加一句 printf("::i = %d\n", ::i); 你就会看到输出100了。改变了全局的i
------解决方案--------------------
改变的是全局的i
这种问题不清楚的情况下,就打印出i的地址,看看对比对比
test.getI()方法改变的是哪里的i呢?
#include <stdio.h>
int i = 1;
struct Test
{
public:
int j;
int getI()
{
i=100; //那么这里改变的是哪里的i值呢???
return i;
}
};
int main()
{
int i = 2;
Test test;
test.j = 4;
printf("i = %d\n", i); //输出2
printf("::i = %d\n", ::i); //输出1
printf("test.j = %d\n", test.j); //输出4
printf("test.getI() = %d\n", test.getI()); //输出100
printf("i = %d\n", i); //输出2
printf("Press any key to continue...");
getchar();
return 0;
}
------解决方案--------------------
在后面再加一句 printf("::i = %d\n", ::i); 你就会看到输出100了。改变了全局的i
------解决方案--------------------
改变的是全局的i
这种问题不清楚的情况下,就打印出i的地址,看看对比对比