【发布时间】:2023-04-07 19:47:01
【问题描述】:
我的常量指针有问题。这是我的代码:
#include <stdio.h>
typedef struct _duong
{
int tuoi;
int chieucao;
}duong;
struct _duong DUONG;
typedef struct _duong *pduong;
const pduong p;
int main(void)
{
p = &DUONG;
p->tuoi = 25;
p->chieucao = 165;
printf("tuoi : %d\n",DUONG.tuoi);
printf("chieucao : %d\n",DUONG.chieucao);
return 1;
}
编译器抛出错误:无法分配给具有 const 限定类型“const pduong”的变量“p”。 我可以看到问题来自
const pduong p;
和
p = &DUONG;
据我了解,const pduong p 是一个指向常量的指针,因此我们无法更改指向变量的值,但我们可以更改它指向的地址。那么任何人都可以帮助我为什么编译器显示此错误?谢谢。
【问题讨论】:
-
不要typedef指针,我的两分钟已经过去了......
-
是常量指针,不是指向常量的指针。
-
我知道常量指针和指向常量的指针之间的区别,但是您能否针对这种情况更具体地解释一下,为什么
const pduong p这里是一个常量指针? @AnT -
@Dương:点击上面的链接。或者在这里搜索。这个问题已在 SO 上多次解释、解释和过度解释。老实说,我想说的是你必须首先解释为什么你期望它是一个指向常量的指针。为什么真的?如果不了解您困惑的根源,就很难回答您的问题。
标签: c