不到半個(gè)小時(shí)就能寫(xiě)出來(lái)。加我qq751137250,寫(xiě)完發(fā)給你,你送我一個(gè)qq背景音樂(lè)。
10年積累的成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有洪雅免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
有多處錯(cuò)誤,主程序中只有一處,但調(diào)用函數(shù)錯(cuò)得挺多的,最主要的是對(duì)結(jié)構(gòu)指針的運(yùn)用,stu *p 下,引用其數(shù)組不能用(*p)[xx],因?yàn)閜本身就是結(jié)構(gòu)數(shù)組的首址,所以直接用p[xx]即可訪問(wèn)定義的所有單元。
定義一個(gè)函數(shù):void f(void *d){ } {ReadData,0,0,f}。
結(jié)構(gòu)體指針就是這個(gè)指針變量的值必須指向存放該結(jié)構(gòu)體的內(nèi)存位置。當(dāng)這個(gè)指針沒(méi)有任何指向時(shí),可以賦值為null值,但是改指針不可使用,程序中應(yīng)該做判斷。下面是一些賦值演示。
1、functionpointer就是函數(shù)指針,指向一個(gè)函數(shù),該函數(shù)的原型類似 void function(pStruct_X * p)P.functionpointer,就等于是調(diào)用該函數(shù)了。不過(guò)你的代碼中,沒(méi)寫(xiě)初始化,到底這個(gè)函數(shù)指針是指向哪個(gè)函數(shù)。
2、//在結(jié)構(gòu)體中包含函數(shù)指針,//這樣,可以使用結(jié)構(gòu)體,調(diào)用函數(shù)。//這個(gè)有點(diǎn)像C++的面向?qū)ο蟮念?//十分好用。
3、但指針就不同了,C語(yǔ)言的指針大小是4個(gè)字節(jié),他只是指向一個(gè)地址,和其他的全部無(wú)關(guān),他不需要知道自己類型有多大,有怎樣的結(jié)構(gòu)什么的,這些都不是他該關(guān)心的,他只要指向一個(gè)正確的地址就OK了,這就是指針的職責(zé)。
1、s表示變量m本身,對(duì)*s的賦值就是對(duì)m賦值,所以*s=a[p]是正確的。請(qǐng)注意,函數(shù)fun中的s變量是一個(gè)地址,只對(duì)該地址進(jìn)行重新賦值,并不對(duì)其所指向的變量m造成影響。所以s=&a[p]不改變main函數(shù)中m變量的值。
2、}*LinkList; //結(jié)構(gòu)體。修改為 typedef struct LNode{ int data;struct LNode *next;}*LinkList; //結(jié)構(gòu)體。
3、tail是一個(gè)指針,它指向的內(nèi)容會(huì)因函數(shù)內(nèi)的變化而發(fā)生變化,但它本身不會(huì)因函數(shù)的變化而發(fā)生變化。