結構體指針涉及到的問題

#include
#include<stdlib.h> 
typedef struct mystruct
{
int a;
}T,*ptr;
int main()
{
ptr A=NULL;//不只是結構體指針,任何指針都應該加上這個NULL,用的時候再爲這個指針提供空間。
ptr B=NULL;
A=(ptr)malloc(sizeof(T));//分配空間 
A-> a =5;
/*-------------------------------------*/
//接下來說下一個問題就是:a=b這樣會發什麼。
B=(ptr)malloc(sizeof(T)) ;//分配空間
B=A;
printf("A:%d B:%d\n",A->a,B->a); 
A->a=3;
printf("A:%d B:%d\n",A->a,B->a); 
B->a=7;
printf("A:%d B:%d\n",A->a,B->a);   

}

下圖是結果,可以發現B,A操作的是一片相同的地址,(即忽略了給B分配的地址)

所以如果不想這樣,就只能給每一個結構裏的變量進行復制。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章