结构体指针和数组

typedef struct{
	int num1;
	int num2;
	int num3;
	char name[10];
	int all;
}Student;

	Student *ptr=(Student *)malloc(sizeof(Student)*num);

		for (i=0;i<num;i++)
		{
			scanf("%d %d %d %s",&(ptr+i)->num1,&(ptr+i)->num2,&(ptr+i)->num3,(ptr+i)->name);
			(ptr+i)->all=(ptr+i)->num1*(ptr+i)->num2*(ptr+i)->num3;
			aver+=(ptr+i)->all;
		}
		aver/=num;
		for (i=0;i<num;i++)
		{
			if ((ptr+i)->all > aver) strcpy(result[0],(ptr+i)->name);
			if ((ptr+i)->all < aver) strcpy(result[1],(ptr+i)->name);
		}

很久没写了,一直出错。因为之前写成ptr[i]->num1之类的,后来查了资料才知道。

1.Student a;可以用a.num1来进行访问----就是结构体名. 的形式来进行访问。

2.对于指针ptr来说,只能用指针名->结构体变量名 来进行访问。所以上面的ptr[i]->num1出错,因为数组中ptr[i]==*(ptr+i),ptr[i]并不是一个指针了,改成(ptr+i)就可以了。

3.对于指针如果想用. 的形式进行访问时,需要符合1中的结构形式------ptr[i].num1就可以了。

综上所述:结构体名访问就用.的形式进行访问,而指针的话就用指针名->的形式进行访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>