结构体数组指针?

ruying1389279 2015-01-26 08:11:57
#include "stdio.h"
#include "stdlib.h"

typedef struct
{
int id;
int eng;
int math;
int sum;
int avg;
}student;

int main(void)
{
student *pstu;
student stu[50];
int i;
pstu = stu;
for (i = 0; i < 3; i++)
{
scanf("%d",&pstu[i]->id);//*这段代码有问题
}

结构体指针变量不是要用->符号来处理吗?为什么用->符号会报错,用“.”符号确能编译运行?
...全文
152 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuchang910781261 2015-01-30
  • 打赏
  • 举报
回复
引用 2 楼 CharlesSimonyi 的回复:
pstu[i] 你对指针使用了数组下标,得到的已经不是个指针了,而是对象本身
我也顺便学习了~~~
luckylucky028 2015-01-29
  • 打赏
  • 举报
回复

指针指向一个结构数组,那么pstu[i]为索引I的值,为一个结构,固用pstu[i]取得一个结构,再取其下的一个字段,将输入写入的是这个字段的地址,故为&(pstu[i].id)),若优先级不清楚,那就用括号来提升优先级,这个级 是万能的
yangyunzhao 2015-01-29
  • 打赏
  • 举报
回复
你是访问数组元素,而不是指针本身
jialike2012 2015-01-29
  • 打赏
  • 举报
回复
定义的指针,应该用->
动力风暴 2015-01-27
  • 打赏
  • 举报
回复
一般,结构体和类中,对于非结构指针实例用"."(下面的pt),而指针型的结构体实例用"->"(下面的*p)。 举例子来说:

#include <iostream>
using namespace std;
struct point
{
    int x;
    int y; //包含两个变量成员
};
void main()
{
    point pt;
    point *p;
    pt.x=1; 
    pt.y=2;
    cout<<pt.x<<endl<<pt.y<<endl;//不能用“->”
    cout<<p->x<<endl<<p->y<<endl;//不能用“.”
}
这是结构体的,类也是一样的。 这是我百度的,楼主可以参考学习~~~~
均陵鼠侠 2015-01-26
  • 打赏
  • 举报
回复
pstu [i].id
encoderlee 2015-01-26
  • 打赏
  • 举报
回复
pstu[i] 你对指针使用了数组下标,得到的已经不是个指针了,而是对象本身
mujiok2003 2015-01-26
  • 打赏
  • 举报
回复
scanf("%d",(&pstu[i])->id);
注意优先级

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧