s表示變量m本身,對*s的賦值就是對m賦值,所以*s=a[p]是正確的。請注意,函數(shù)fun中的s變量是一個地址,只對該地址進行重新賦值,并不對其所指向的變量m造成影響。所以s=&a[p]不改變main函數(shù)中m變量的值。
成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領(lǐng)域包括:網(wǎng)站設計制作、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的洪洞網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
C++傳引用函數(shù):void foo(int& a) { a = 3; } 假如a = 2,執(zhí)行foo(a)后,a = 3。
結(jié)構(gòu)體變量的指針是不能做函數(shù)形式參數(shù)的,因為如果結(jié)構(gòu)體變量的指針,作為函數(shù)形式參數(shù),那么有些事情可能就不成立了,如果這些事情不成立的話,也就是結(jié)構(gòu)體變量的指針,做了函數(shù)形式參數(shù),是沒有任何意義的。
結(jié)構(gòu)體數(shù)組傳給指針,實質(zhì)上是不可能的,本質(zhì)上傳的是數(shù)組首地址,根據(jù)偏移來操作數(shù)組,這樣看起來好像是真在操作數(shù)組一樣。就和普通指針一樣使用,只不過它是結(jié)構(gòu)體數(shù)組。
struct LNode{ int data;struct LNode *next;}*LinkList; //結(jié)構(gòu)體。修改為 typedef struct LNode{ int data;struct LNode *next;}*LinkList; //結(jié)構(gòu)體。
主函數(shù)里的類型也是int*,對應上了,就可以了。在定義變量的時候,建議你把*和數(shù)據(jù)類型當做一個整體,看成一種新的數(shù)據(jù)類型,不要把*和變量看做一個整體。比如int* p,int*是一個數(shù)據(jù)類型,p是變量名。
一般來說函數(shù)要對形參進行操作,改變傳入的真實值并在函數(shù)外面繼續(xù)影響的時候用指針,或者傳入的形參是個數(shù)組的時候用形參。如果改變形參的值,在函數(shù)外面不受影響的話,最好直接傳值,(指針也應該沒有問題)。
普通傳參:函數(shù)接收到結(jié)構(gòu)體參數(shù)后,會復制一份原來的結(jié)構(gòu)體作為形參供函數(shù)使用,而函數(shù)內(nèi)的任何操作都是對拷貝結(jié)構(gòu)體的修改,不會影響到原本的結(jié)構(gòu)體變化。
這兩者作為函數(shù)參數(shù),還是有很大的區(qū)別的,我說說自己的理解。
兄弟,你定義了結(jié)構(gòu)體指針的數(shù)組,但是沒有給這個結(jié)構(gòu)體指針分配內(nèi)存。 這下明白了? 你可以申明成結(jié)構(gòu)體的數(shù)組,用這個結(jié)構(gòu)體實體的地址作為參數(shù)傳進去。
結(jié)構(gòu)體數(shù)組傳給指針,實質(zhì)上是不可能的,本質(zhì)上傳的是數(shù)組首地址,根據(jù)偏移來操作數(shù)組,這樣看起來好像是真在操作數(shù)組一樣。就和普通指針一樣使用,只不過它是結(jié)構(gòu)體數(shù)組。
要將數(shù)組長度作為一個參數(shù)傳給average函數(shù),不能在average函數(shù)內(nèi)部通過int arrLen = sizeof(a) / 4;來計算數(shù)組長度。
其實,結(jié)構(gòu)名就是一個變量,由于你的形參和你的實參取名是一樣的。而且對于形參肯定會變 實參不會變。所以,你中間的maxA變量,其實是子函數(shù)的形參變了。
只要把print函數(shù)定義和聲明處的參數(shù)中 & 符號去掉就行了,你加上這個符號愿意可能是想按引用使用參數(shù),但是pstud[]是數(shù)組,直接使用它就是使用他的地址,也即按引用使用,所以不必加它。
可以把結(jié)構(gòu)體作為參數(shù)啊,不去取地址的意思,是引用的意思,函數(shù)執(zhí)行時修改L的值,就直接的修改了實參的值,相當于地址傳遞了。真正調(diào)用的時,如下:SqList tempStruct;InitList_Sq(tempStruct)這樣就可以了。
i].a=i;flag[i].b=ch++;cout第i+1組:a是flag[i].a,b是flag[i].bendl; } } void main(){ example temp[10];deal(temp);} 可以參照一下,解決結(jié)構(gòu)體數(shù)組作為參數(shù)傳遞。
結(jié)構(gòu)體數(shù)組傳給指針,實質(zhì)上是不可能的,本質(zhì)上傳的是數(shù)組首地址,根據(jù)偏移來操作數(shù)組,這樣看起來好像是真在操作數(shù)組一樣。就和普通指針一樣使用,只不過它是結(jié)構(gòu)體數(shù)組。
結(jié)構(gòu)體數(shù)組指針作為函數(shù)參數(shù),通過數(shù)組的首地址與偏移量對結(jié)構(gòu)體數(shù)組進行scanf的賦值,在函數(shù)中通過指針間接訪問到其指向的內(nèi)存。
利用指針作函數(shù)參數(shù),設計一函數(shù)實現(xiàn)將n個元素進行排序 將這n個元素存在數(shù)組里,然后用指針類型參數(shù)接收即作為形參,然后采用排序算法對這些元素進行排序即可 C語言,編寫一函數(shù),其功能是求一個長整數(shù)各位數(shù)字之和。
指針完全可以作為函數(shù)的參數(shù)進行傳遞,其實在C中,數(shù)組作為參數(shù)傳遞,跟指針作為參數(shù)傳遞都很類似的,指針傳的是該指針指向的地址,而數(shù)組參數(shù)則是將該數(shù)組的首地址傳遞過去。
int (*arr)[m];所以,傳遞二維數(shù)組作為參數(shù),實際上就是傳遞了一個指針。
C/C++中,二維數(shù)組的第一維的每一個元素都是一維數(shù)組。所以,用指向一維數(shù)組的指針或用第一維維數(shù)空缺的二維數(shù)組作為函數(shù)的形式參數(shù)都能達到目的。
在C語言中可以用二維數(shù)組作為實參或者形參。
如果你的二維數(shù)組是確定的,比如本例中的2×2。
結(jié)構(gòu)體數(shù)組傳給指針,實質(zhì)上是不可能的,本質(zhì)上傳的是數(shù)組首地址,根據(jù)偏移來操作數(shù)組,這樣看起來好像是真在操作數(shù)組一樣。就和普通指針一樣使用,只不過它是結(jié)構(gòu)體數(shù)組。
可以的,這樣寫:test((RGBColor){0x0,0x1,0x2});這個意思是把{0x0,0x1,0x2}強制轉(zhuǎn)化為RGBColor類型。從語法語義上面是沒問題的,在GCC編譯沒問題。但是51上面沒實驗,按C標準能說得通,你可以試一試。
s表示變量m本身,對*s的賦值就是對m賦值,所以*s=a[p]是正確的。請注意,函數(shù)fun中的s變量是一個地址,只對該地址進行重新賦值,并不對其所指向的變量m造成影響。所以s=&a[p]不改變main函數(shù)中m變量的值。
網(wǎng)站題目:c語言結(jié)構(gòu)體做函數(shù)參數(shù) c語言怎么把結(jié)構(gòu)體參數(shù)引用到函數(shù)體
當前網(wǎng)址:http://chinadenli.net/article9/diogjoh.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)頁設計公司、網(wǎng)站策劃、網(wǎng)站維護、定制網(wǎng)站、虛擬主機
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)