c語言指向結(jié)構(gòu)體數(shù)組的指針 結(jié)構(gòu)體指針和結(jié)構(gòu)體中的指針的區(qū)別?
結(jié)構(gòu)體指針和結(jié)構(gòu)體中的指針的區(qū)別?1. 對(duì)于不同的數(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. 不同用法
結(jié)構(gòu)體指針和結(jié)構(gòu)體中的指針的區(qū)別?
1. 對(duì)于不同的數(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的指針,并且下一個(gè)成員引用struct B類型的指針。
結(jié)構(gòu)體指針和結(jié)構(gòu)體中的指針的區(qū)別?
您的理解是正確的。形式參數(shù)是結(jié)構(gòu)的變量,對(duì)結(jié)構(gòu)所做的任何更改都不會(huì)影響參數(shù),因?yàn)樾问絽?shù)是參數(shù)的完整副本。形式參數(shù)是指向結(jié)構(gòu)的指針。對(duì)結(jié)構(gòu)的修改直接影響實(shí)際參數(shù)的結(jié)構(gòu)數(shù)據(jù)。因?yàn)樾问絽?shù)和實(shí)際參數(shù)都指向同一個(gè)內(nèi)存塊。注意:形式參數(shù)是指針。如果只更改指針本身,實(shí)際參數(shù)將不受影響。
結(jié)構(gòu)體中的指針變量?
調(diào)用函數(shù)f時(shí),盡管P指向b.name指向的空間是a.name指向的空間(因?yàn)榇嬖赽=a),但P=(char*)malloc(10)P指向函數(shù)f中新分配的10字節(jié)空間,因此指針變量P不再與b.name指向的空間相同。當(dāng)然,結(jié)構(gòu)變量B中每個(gè)成員項(xiàng)的值不會(huì)改變。指針變量是存儲(chǔ)地址的變量。存儲(chǔ)地址的變量稱為指針變量。指針變量是一個(gè)特殊變量,它不同于一般變量。常規(guī)變量存儲(chǔ)數(shù)據(jù)本身,而指針變量存儲(chǔ)數(shù)據(jù)的地址。假設(shè)程序中聲明了一個(gè)int類型的變量,其值為68。系統(tǒng)為變量a分配的第一個(gè)地址是0x65fdf4h,PA是存儲(chǔ)變量a地址的指針變量,即PA中存儲(chǔ)的值是0x065fdf4h,訪問變量a有兩種方式:一種是根據(jù)0x065fdf4h的地址直接找到a的存儲(chǔ)單元,從而訪問變量a;另一種是是根據(jù)系統(tǒng)為PA分配的地址找到PA,然后根據(jù)PA的值找到內(nèi)存中變量a的存儲(chǔ)單元(即變量a的地址為0x065fdf4h),從而訪問變量a,前者稱為直接訪問,后者稱為間接訪問。如果指針變量存儲(chǔ)對(duì)象的地址,則表示指針變量指向該對(duì)象。在C編程中,指針變量只有在指向時(shí)才有意義。
如何用指針表示結(jié)構(gòu)體中的結(jié)構(gòu)體?
//示例如下:struct student{TCHAR name[20][TCHAR sex/tint score[3]}//定義結(jié)構(gòu)指針struct student*STU//引用結(jié)構(gòu)中的成員如下:STU->name//這是引用字符串STU->sex的方法//這是引用普通成員變量STU->sex的方法gtscore[0]//這是在數(shù)組成員中引用數(shù)組元素的方法