当内部块具有相同的变量声明时,如何访问内部块中的外部块变量?

当内部块具有相同的变量声明时,如何访问内部块中的外部块变量?,第1张

概述int main(int argc, char** argv) { int i=5; { int i=7; printf("%d\n", i); } return 0;} 如果我想访问printf中的外部i(int i = 5)值,那该怎么办呢? C99标准的相关部分,第6.2.1节(标识符的范围): 4 […] If an ide
int main(int argc,char** argv) {    int i=5;    {        int i=7;        printf("%d\n",i);    }    return 0;}

如果我想访问printf中的外部i(int i = 5)值,那该怎么办呢?

解决方法 C99标准的相关部分,第6.2.1节(标识符的范围):

4 […] If an IDentifIEr designates two different entitIEs in the same name space,the scopes might overlap. If so,the scope of one entity (the inner scope) will be a strict subset of the scope of the other entity (the outer scope). Within the inner scope,the IDentifIEr designates the entity declared in the inner scope; the entity declared in the outer scope is hIDden (and not visible) within the inner scope.

更新

要防止pmg’s answer消失:您可以通过在隐藏发生之前声明指向它的指针来访问外部块变量

int i = 5;{    int *p = &i;    int i  = 7;    printf("%d\n",*p); /* prints "5" */}

当然,给出这样的隐藏变量是永远不需要的,而且总是很糟糕.

总结

以上是内存溢出为你收集整理的当内部块具有相同的变量声明时,如何访问内部块中的外部块变量?全部内容,希望文章能够帮你解决当内部块具有相同的变量声明时,如何访问内部块中的外部块变量?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1222246.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存