为什么要取消引用C中的引用?在*

问题描述 投票:0回答:1
旁边使用&

((我看过几个SO问题,但是没有一个问题可以解决,如果有一个重复的问题我很乐意删除这个问题,似乎以前必须问过一个简单的问题,但我找不到)) >

例如,我查看了thisthis以及thisthis等。

问题是

EdX上的基本C编程MOOC显示了当指针传递结构时如何访问函数中结构的成员。 为什么他们在世界上使用&旁边的* ???

它们显示:scanf("%lf", &(*studptr).aveGrade);

为什么不只在scanf中使用studptr.aveGrade

撇开单独的问题,“为什么不使用scanf”

]

(要求提供完整示例)

void readStudent(struct student *studptr) {
    print("\nEnter a new student record: \n");
    printf("First name: ");
    scanf("%s", (*studptr).firstName);
    printf("Last name: ");
    scanf("%s", (*studptr).lastName);
    printf("Birth year: ");
    scanf("%d", &(*studptr).birthYear);
    printf("Average grade: ");
    scanf("%lf", &(*studptr).aveGrade);
}

((我看过几个SO问题,但是没有一个问题可以解决,如果有重复的问题我很乐意删除这个问题,好像以前必须问过一个简单的问题,但是我...

c pointers scanf pass-by-reference ampersand
1个回答
3
投票

因为&不代表(*stupdtr),所以它代表(*studptr).aveGrade.运算符具有更高的优先级。


1
投票

这两个符号指的是不同的事物。

© www.soinside.com 2019 - 2024. All rights reserved.