c語言結(jié)構(gòu)體指針 結(jié)構(gòu)體中的指針變量?
結(jié)構(gòu)體中的指針變量?調(diào)用函數(shù)f時,盡管P指向b.name指向的空間是a.name指向的空間(因為存在b=a),但P=(char*)malloc(10)P指向函數(shù)f中新分配的10字節(jié)空間,因此指針變量P
結(jié)構(gòu)體中的指針變量?
調(diào)用函數(shù)f時,盡管P指向b.name指向的空間是a.name指向的空間(因為存在b=a),但P=(char*)malloc(10)P指向函數(shù)f中新分配的10字節(jié)空間,因此指針變量P不再與b.name指向的空間相同。當(dāng)然,結(jié)構(gòu)變量B中每個成員項的值不會改變。指針變量是存儲地址的變量。存儲地址的變量稱為指針變量。指針變量是一個特殊變量,它不同于一般變量。常規(guī)變量存儲數(shù)據(jù)本身,而指針變量存儲數(shù)據(jù)的地址。假設(shè)程序中聲明了一個int類型的變量,其值為68。系統(tǒng)為變量a分配的第一個地址是0x65fdf4h,PA是存儲變量a地址的指針變量,即PA中存儲的值是0x065fdf4h,訪問變量a有兩種方式:一種是根據(jù)0x065fdf4h的地址直接找到a的存儲單元,從而訪問變量a;另一種是是根據(jù)系統(tǒng)為PA分配的地址找到PA,然后根據(jù)PA的值找到內(nèi)存中變量a的存儲單元(即變量a的地址為0x065fdf4h),從而訪問變量a,前者稱為直接訪問,后者稱為間接訪問。如果指針變量存儲對象的地址,則表示指針變量指向該對象。在C編程中,指針變量只有在指向時才有意義。
結(jié)構(gòu)體指針和結(jié)構(gòu)體中的指針的區(qū)別?
1. 對于不同的數(shù)據(jù)類型:
結(jié)構(gòu)指針:指向變量的結(jié)構(gòu)指針。
結(jié)構(gòu)中的指針:結(jié)構(gòu)中的指針指成員。
2. 結(jié)構(gòu)指針:指向結(jié)構(gòu)類型的指針。
結(jié)構(gòu)中的指針:指成員指針。
3. 不同用法:
struct a{int a flag B}struct a m,*P=&m
P是struct a類型的結(jié)構(gòu)指針,指向同一類型的結(jié)構(gòu)變量m。
struct B中的指針:
struct B
{int a float*B struct B*next}struct B m,n float BB=1.1m。B=&bbm.next=下一步(&n)
B成員是指類型為float的指針,并且下一個成員引用structb類型的指針。