You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:06:02