嵌套结构中的指针

时间:2013-07-10 13:04:31

标签: c pointers nested structure

我们如何在嵌套结构中使用指针?

我在下面给出的代码中创建了两个结构,如何访问st_no的元素? 彻底解释嵌套结构。

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
   char st_no[22];
   int no;
}address;

typedef struct
{
  char name[15];
  int mark;
  address addr;
}student;

int main (void)
{
 student *selva;

strcpy(selva->name, "ajay");
strcpy(selva->addr.st_no,"3rd st");
printf("%s",selva->name);

 return 0;
}

2 个答案:

答案 0 :(得分:3)

你只有一个指向学生的指针,而不是一个真正的学生。要动态分配,您需要:

student * selva = malloc(sizeof(student))  // be sure to free this later

然后你可以这样做:

strcpy(selva->addr.st_no, "3rd st")

或者,如果您不需要动态地执行此操作,则可以在堆栈上创建变量,如下所示:

student selva

然后复制到st_no你可以:

strcpy(selva.addr.st_no, "3rd st")

答案 1 :(得分:0)

使用如下

student *selva;
selva = malloc(sizeof(student));
strcpy(selva->name, "ajay");
strcpy(selva->addr.st_no,"3rd st");