首页 新闻 赞助 找找看

(p+i)和p[i]

0
悬赏园豆:10 [已解决问题] 解决于 2017-03-28 17:48

在下面的代码中(p+i)和p[i]所代表的含义不同

p[i]是指针指向的值  (p+i)则是地址  

加上不同的运算符p[i].   (p+1)->

却都可以指向结构体的列表 为什么呢?

struct stu2
{
//成员列表
char * name;
float * scores;
};

int main()
{
struct stu2 *p = (struct stu2 *)malloc(sizeof(struct stu2) * 3);
for (int i = 0; i < 3; i++)
{
p[i].name = (char *)malloc(sizeof(char) * 21);
p[i].scores = (float *)malloc(sizeof(float) * 3);
//(p+i)->name

未来的颈椎病患者的主页 未来的颈椎病患者 | 初学一级 | 园豆:192
提问于:2017-03-22 18:29
< >
分享
最佳答案
0

看似简单,却不知用语言如何描述,在下惭愧啊.

p[i] 等价 *(p+i);

(p+i) 是指向地址, 加*号, 可以理解为取值.

所以p[i].name 等价 (*(p+i)).name 等价 (p+i)->name,   -> 用于指针.

收获园豆:8
[0] | 小虾三级 |园豆:1257 | 2017-03-23 12:55
其他回答(1)
0

->是一个运算符.

收获园豆:2
吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-22 19:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册