如何访问函数中的全局指针,包含另一个具有相同名称的指针?

时间:2012-11-08 05:29:52

标签: c

  

可能重复:
  How can I access a shadowed global variable in C?

如何访问函数中的全局指针,包含具有相同名称和类型的另一个指针。

前:

#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;
}

3 个答案:

答案 0 :(得分:1)

因为你正在做%s%c你会得到``a'`

此外,您应该了解instance member hiding它也称为shadowing

用外行语言你可以说:我们越接近变量,我们就不会寻找更远的

如果localglobal具有相同的标识符,则本地将首先显示

如果您想了解有关如何在本地范围内访问全局变量的更多信息

在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;
}