C语言中如何声明二级指针并直接从普通变量为其赋值
C语言二级指针声明与赋值问题解答
错误写法不生效的原因
C语言中&(取地址运算符)的操作数必须是左值,即有明确内存存储位置、可被寻址的对象(例如我们声明的变量)。
你尝试的&&a写法中,第一层&a得到的是变量a的地址常量,属于没有固定内存存储位置的右值,无法作为取地址运算符的操作数,所以连续两次对普通变量取地址的写法天然不合法,编译器会直接报错。
正确实现方式
二级指针的本质是「指向一级指针的指针」,因此必须先声明一个一级指针变量作为中间载体,才能完成从普通变量到二级指针的赋值,合法示例如下:
#include <stdio.h> int main() { int a = 5; // 第一步:声明一级指针变量,存储普通变量a的地址 int* b = &a; // 第二步:对一级指针变量b(左值)取地址,赋值给二级指针 int** c = &b; // 测试访问:两次解引用即可得到a的值 printf("a的值为:%d\n", **c); // 输出:a的值为:5 return 0; }
不存在跳过中间一级指针变量、直接从普通变量连续两次取地址给二级指针赋值的合法写法。
内容的提问来源于stack exchange,提问作者sauv0168
相关产品推荐
相关产品推荐

