gpt4 book ai didi

c - C语言中的指针混淆

转载 作者:太空狗 更新时间:2023-10-29 15:15:54 24 4
gpt4 key购买 nike

大家好,新年快乐!

我很难理解 C 语言中的指针。据我所知,指针是一种特殊变量,用于存储常规变量的地址。

我正在发布两个等效的代码示例。首先,我在 scanf 中输入了 &d1.am

在第二个示例中,如果我将 &d1.am 更改为 ptd1.am,它会弹出一个编译错误,我不明白为什么.

struct student{
int am;
char stname[20];
char stsurname[20];
};

int main(){

struct student d1;
printf("1st student\n");
printf("Enter am\n");
scanf("%d", &d1.am)

第二个等效样本:

struct student{
int am;
char stname[20];
char stsurname[20];
};

int main(){

struct student d1;
struct student *ptd1;
ptd1=&d1;
printf("1st student\n");
printf("Enter am\n");
scanf("%d", &(*ptd1).am);

我知道正确的做法是键入 &(*ptd1).am 但我不明白为什么。 &(*ptd1).am 如何等于 &d1.amptd1.am 不是?我清楚地输入了 ptd1=&d1!

预先感谢您的帮助!

最佳答案

. 运算符的优先级高于一元 &&d1.am 等同于&(d1.am)ptd1.am 等同于(&d1.am) code>,表示 &d1.am != (&d1).am

关于c - C语言中的指针混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34727682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com