首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指向C中指向结构的指针

指向C中指向结构的指针
EN

Stack Overflow用户
提问于 2016-03-13 14:22:39
回答 1查看 78关注 0票数 3

我使用指针和结构在C中实现堆栈。Push和crateStack函数运行良好(它们都在内存中创建新元素)。无论如何,pop函数不能工作,我不知道为什么,下面是该函数的代码:

代码语言:javascript
复制
int pop(element **lastStackEl)
{
  int poppedValue = *lastStackEl->value;
  element *temp = *lastStackEl->prev;
  free(*lastStackEl);
  *lastStackEl=temp;
  return poppedValue;
}

这是我的结构:

代码语言:javascript
复制
typedef struct Element {
  int value;
  struct Element *prev;
} element;

编译器在pop函数的第一行和第二行出现错误:

代码语言:javascript
复制
error: request for member 'value' in something not a structure or union
int poppedValue = *lastStackEl->value;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-13 14:24:46

根据运算符优先,间接(取消引用)运算符(*)比成员访问操作符(->)来得晚。因此,如果没有明确的括号,您的语句的行为如下

代码语言:javascript
复制
int poppedValue = *(lastStackEl->value);

现在,lastStackEl是指向element的指针,不能用作成员访问操作符的LHS。这就是错误信息的意义所在。

首先需要解除lastStackEl (获取element*类型),然后可以使用->访问成员value。你应该写

代码语言:javascript
复制
int poppedValue = (*lastStackEl)->value;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35971404

复制
相关文章

相似问题

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