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" */}
当然,给出这样的隐藏变量是永远不需要的,而且总是很糟糕.
总结以上是内存溢出为你收集整理的当内部块具有相同的变量声明时,如何访问内部块中的外部块变量?全部内容,希望文章能够帮你解决当内部块具有相同的变量声明时,如何访问内部块中的外部块变量?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)