我定义了一个结构:typedef struct tagUser{
char name[30];
char passwd[30];
};然后
tagUser *user=NULL;
user=new tagUser;
竟然出现这样的问题:
sizeof(user) //4   ?  怎么是4 ?我明明只分配了一个结构空间,为什么下面的都可以?
strcpy(user[0].name,"abc");
strcpy(user[1].name,"bcd");期待高手啊。。

解决方案 »

  1.   

    user是一个指针,是一个DWORD值,只是这个DWORD值指向的是一个tagUser结构的内存块。
    所以当然sizeof(user)=4了。如果sizeof(tagUser)就不是4了。
      

  2.   

    sizeof(user)是取指针值大小,故是4,sizeof(*user)则是tagUser结构类型的堆实例大小(new出来的堆).
      

  3.   

    32位下sizeof指针结果是4user[0] 指向user指针指向的内容
    user[1] 指向user指针+user内容大小的偏移指向的内容,但是结果应该是错的
      

  4.   

    sizeof(user)这个结果我已经明白了
    假如我只想分配一个 这样的内存空间,那该怎么做?tagUser *user=NULL;
    user=new tagUser;
    这样是不行了
      

  5.   

    user = new tagUser;就是分配了这样一个空间