首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在我使用的这个简单的代码中得到一个错误。我打赌解决办法很简单,但我似乎在网上找不到答案。提前谢谢你

在我使用的这个简单的代码中得到一个错误。我打赌解决办法很简单,但我似乎在网上找不到答案。提前谢谢你
EN

Stack Overflow用户
提问于 2022-11-21 21:53:49
回答 1查看 46关注 0票数 0

这是我试图运行的代码(我正在执行一个C赋值,但这只是为了帮助我理解C中的指针语法)。

代码语言:javascript
运行
复制
#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;
}

在运行代码时,我会收到以下错误消息:

代码语言:javascript
运行
复制
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;
      |         ^
      |         ->
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-21 22:05:03

在这个表达式中

代码语言:javascript
运行
复制
*a.moo = 5;

假定数据成员moo是一个被取消引用的指针。

但实际上,a是一个指针。

后缀成员访问操作符.比一元运算符*具有更高的优先级。

因此,相反,您需要编写

代码语言:javascript
运行
复制
a->moo = 5;

代码语言:javascript
运行
复制
( *a ).moo = 5;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74525292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档