【发布时间】:2021-06-23 11:58:13
【问题描述】:
我有这样的指针代码的多级指针:
int
main(int argc, char **argv) {
int a = 1;
int *pa = &a;
//int **ppa = &pa; // [Right Code]
int **ppa = &&a; // [Wrong Code]
int ***pppa = &ppa;
*ppa = pa;
**pppa = pa;
*pppa = &pa;
}
使用gcc编译时,这一行"int **ppa = &&a;"失败。
⋊> /h/m/stackoverfolw gcc test4.c
test4.c:在函数'main'中:
test4.c:7:2:错误:标签“a”已使用但未定义
int **ppa = &&a;
^
谁能告诉我我们是否不能初始化指向具有值类型和 2 级符号 '&' 的指针的指针?
【问题讨论】:
-
地址没有地址。你的指针,它保存一个地址作为它的值,确实如此。如果我住在 123 Some St.,你会说我的地址是什么?
-
为了进一步说明,假设我们做了
int a = 1; int *p_int = &a; int** pp_int = &p_int; int b = 2; p_int = &b; pp_int = &p_int;。pp_int的值应该在这里改变吗?毕竟b和a是不一样的,所以如果我们真的取“a的地址”,应该是不一样的。但是pp_int不是a的地址,而是p_int的地址,这个变量以前是保存a的地址,现在没有了。p_int的地址没有变。
标签: c++ c pointers gcc compilation