使用Pointer to Struct读取成员变量

时间:2017-11-22 14:04:04

标签: c pointers structure scanf

#include<stdio.h>

struct data{
    int i;
    struct data *p;
};

int main() {
    struct data *p=malloc(sizeof(struct data));

    //How do i use pointer to structure to read a integer in member variable i?

    scanf("%d",&p->i);    // I am advised to use this,Can you interpret this??
    scanf("%d",&(*p).i);  // Is this valid?
    scanf("%d",p->i);     // Why is this not valid since p is nothing but a pointer 
}
  1. 解释此&p->i。为什么这代表成员变量i的地址?

  2. scanf("%d",&(*p).i);有效吗?为什么呢?

2 个答案:

答案 0 :(得分:4)

在你的情况下

并且它们都生成一个指向整数的指针,这是scanf()函数参数根据提供的转换说明符所要求的。

然而,

 scanf("%d",p->i);

无效,因为p->i会为您提供int,而您需要一个指向整数的指针。

答案 1 :(得分:2)

scanf需要指向某个内容的指针,以便根据您为该函数提供的格式存储数据。

scanf("%d",&p->i); // I am advised to use this,Can you interpret this??

p->ii指向的结构提供整数p
&p->i提供了i地址,是scanf所必需的。

scanf("%d",&(*p).i);  //Is this valid?

是的,这和上面一样。 (*p).ip->i

scanf("%d",p->i);  //Why is this not valid since p is nothing but a pointer 

scanf需要一个指针来存储&#34;%d&#34;,这意味着一个整数;但是,在这里你给出了i的值,而不是指向i的指针。