这是我试图运行的代码(我正在执行一个C赋值,但这只是为了帮助我理解C中的指针语法)。
#include <stdio.h>
struct cow{
  int moo;  
};
void newm(struct cow *a){
    *a.moo = 5;
}
int main() {
    // Write C code here
    printf("Hello world");
    struct cow a;
    newm(&a);
    printf("hallo %i", a.moo);
    
    return 0;
}在运行代码时,我会收到以下错误消息:
gcc /tmp/2RZ9WOHWdH.c -lm
/tmp/2RZ9WOHWdH.c: In function 'newm':
/tmp/2RZ9WOHWdH.c:9:9: error: 'a' is a pointer; did you mean to use '->'?
    9 |     *(a).moo = 5;
      |         ^
      |         ->发布于 2022-11-21 22:05:03
在这个表达式中
*a.moo = 5;假定数据成员moo是一个被取消引用的指针。
但实际上,a是一个指针。
后缀成员访问操作符.比一元运算符*具有更高的优先级。
因此,相反,您需要编写
a->moo = 5;或
( *a ).moo = 5;https://stackoverflow.com/questions/74525292
复制相似问题