问题是这样的
我定义了2个结构体
typedef struct _Addr 
{
char *City;
int Num;
}Addr;typedef struct _student
{
char name[5];
int  age;
Addr *add;}Student;
现在我要赋值
Student *p;
p = new Student[20] ;//结构体数组
strcpy(p[2].add->City,"asdf");//这句编译没问题,就是不能执行,
请问应该怎么引用嵌套的结构体里的指针呢

解决方案 »

  1.   

    你的这个add->City成员还没有初始化或者说分配内存呢。
      

  2.   

    char   *City; 
    这是个指针,它指向哪里?申请缓冲区,然后为它赋值,试试看。
      

  3.   

    你可以给你这个Addr类添加一个构造函数,来进行City成员的初始化;或者提供一个成员函数为其赋值,在赋值的时候根据需要来分配空间。
      

  4.   

    不是已经 分配内存了么?这句 
    p   =   new   Student[20]还是它只是给Student分配了
      

  5.   


    char       *City;是指针,需要指向一个缓冲区;如:char buf[100];City = buf;
    或者你在定义结构体的时候就这样定义:char City[100];这时,就不需要其它操作了。
    不过:Addr   *add; add 也是指针,它也要指向缓冲区。