如何访问函数中的全局指针,包含具有相同名称和类型的另一个指针。
前:
#include <stdio.h>
char *ptr = "Hello World";
int main(void)
{
//char ptr = 'a';
char *ptr = "Global is over written";
printf("%s", ptr); //Here i am trying to print the value of global ptr i.e, "Hello World".
return 0;
}
答案 0 :(得分:1)
因为你正在做%s
做%c
你会得到``a'`
此外,您应该了解instance member hiding
它也称为shadowing
。
用外行语言你可以说:我们越接近变量,我们就不会寻找更远的
如果local
和global
具有相同的标识符,则本地将首先显示
如果您想了解有关如何在本地范围内访问全局变量的更多信息
在C ++中使用::
范围解析运算符
对于C,请访问link
答案 1 :(得分:1)
您无法访问全局变量,因为局部变量 shadow 是全局变量,它们都在同一范围内定义并具有相同的名称。如果要同时访问它们,请更改其名称。详细了解Variable Shadowing
答案 2 :(得分:0)
您可以通过这种方式获得全球价值
#include <stdio.h>
char *ptr = "Hello World";
char *getGlobalPtr()
{
return ptr;
}
int main(void)
{
char ptr = 'a';
printf("%s", getGlobalPtr()); //Here i am trying to print the value of global ptr i.e, "Hello World".
return 0;
}