c語言子函數(shù)傳指針出來 C語言函數(shù)傳指針

c語言的傳值與傳指針的問題

其實簡單來說, 如果CreateData()和Print()這二個函數(shù)是正確的, 你只要分別看一下CreateData()和Print()的函數(shù)原型:

十多年的珠海網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整珠海建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“珠海網(wǎng)站設(shè)計”,“珠海網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

1. int CreateData(Lcountry *head): 它的輸入?yún)?shù)類型是 Lcountry *, 也就是Country **, 而 "head"是Country *型, 所以傳給CreateData時, 應(yīng)該取 head, 也即為 Country **型.

2. void Print(Country* p): 它的輸入?yún)?shù)類型就是Country *, 而 "head"正是Country *型, 所以只要給它傳 "head"就可以.

3. "head"和"head"都是指針, 都是地址, "head"是"*head"的地址, 而"head"是"head"的地址.

關(guān)于C語言函數(shù)傳遞指針參數(shù),幫我看看我的程序

你的地址值傳遞錯誤,按照我給你修改的試試看,一定要注意你的實參傳遞的是地址還是具體的值,如果是地址,在子函數(shù)中就不要去修改你傳遞進來的地址。

int

main(void)

{

int

data=0;

//此處隨機分配內(nèi)存空間,不要用指針

myStack=makeStack(myStack,top);

Push(myStack,3);

Push(myStack,8);

Push(myStack,19);

Push(myStack,31);

Push(myStack,43);

Push(myStack,36);

Pop(myStack,data);//此處,傳遞的是地址值

printf("%d

",data);

}

int*

Pop(LinkedStack

myStack,int

*data)

{

pStack

cursor=myStack;

if(Stack_Empty())

{

}

else

{

while(cursor-next!=top)

{

cursor=cursor-next;

}

*data=top-data;

//此處,只是在同一個內(nèi)存空間修改其值,所以不要取地址

top=cursor;

return

data;

}

}

請問在C語言中,如果我在一個函數(shù)里申請一個指針,怎么能讓他傳進去的數(shù)值。從函數(shù)里傳出來呢。

如果你只需要傳出一個值,把這個值放在return后面,

例如 子函數(shù)fun中return p;然后調(diào)用時用 t=fun()就可以了。

如果需要傳回多個值,需要二級指針。

比如fun(int** p){p=0;}

Main()

{ int *q;

fun(q);

}

調(diào)用有q的值就變成0了。

當然由于你說的是將指針傳出,所以p需要是二級指針,如果是一般變量的話,p只需要是一級指針就可以了。

C語言 使用子函數(shù)的函數(shù)參數(shù)傳回指針的方法

不知下列代碼對你是否有用

記?。篊中只有_值_傳遞!

#include conio.h

#include stdio.h

void fun(int **pp, int *i);

int main(void)

{

int *p, i;

i = 88;

fun(p, i);

printf("%d\n", *p);

getch();

return 0;

}

void fun(int **pp, int *i)

{

*pp = i;

}

或者

#include conio.h

#include stdio.h

#include stdlib.h

#define N 100

void getmemory(int **pp, int n);

int main(void)

{

int *p, i;

getmemory(p, N);

for (i = 0; i N; i++)

p[i] = i;

for (i = 0; i N; i++)

(i+1)%10 ? printf("%3d", p[i]) : printf("%3d\n", p[i]); /*輸出0~99*/

getch();

return 0;

}

void getmemory(int **pp, int n)

{

*pp = (int *)malloc(n * sizeof(int));

}

C語言指針與函數(shù)傳遞問題,急急急!

所謂對應(yīng)其實是參數(shù)形式上的對應(yīng)。上面的兩個函數(shù)都要求傳遞一個指針類型。并且還是雙指針類型。c的編譯器執(zhí)行的是字面上的語義檢查,并不實際追究這個參數(shù)真是子函數(shù)需要的。而你傳遞參數(shù)的正確與否在運行時才能反映出來。尤其是指針,傳遞一個錯誤的指針基本會導致你的程序運行不成功,或者直接終止運行。

上面你的代碼中你給你的子函數(shù)傳遞一個int 類型的值,編譯器肯定會報錯,但是你用顯式類型轉(zhuǎn)換將int轉(zhuǎn)換成雙指針類型就騙過了編譯器。比如這樣:

int test=0x00400000;

shell_sort((char**)test,n);

編譯通過,運行必然出錯。

c語言傳遞函數(shù)指針

intcmp是和GetKeyFunc_t對應(yīng)起來的。

而你現(xiàn)在錯在了CmpFunc_t這個函數(shù)參數(shù)上了。

你把怎樣的函數(shù)參數(shù)指針傳給了BST_t *newBST?

你沒交代清楚啊,你把錯誤指針傳給newBST函數(shù)的第一個參數(shù),編譯器肯定報錯了。你給了那么多代碼,關(guān)鍵你把什么傳給了BST_t *newBST的第一個參數(shù)?給一下你調(diào)用這個newBST函數(shù)的代碼,而且要你傳給該函數(shù)第一個參數(shù)的參數(shù)定義。

另外給個建議:定義函數(shù)時,記得對傳進來的參數(shù)進行合法性檢驗。多加幾行代碼是很有必要的,能增強函數(shù)的健壯性。(微軟也好,ISO也好,都對大部分函數(shù)設(shè)計時要求做必要的合法檢驗)

網(wǎng)站名稱:c語言子函數(shù)傳指針出來 C語言函數(shù)傳指針
標題網(wǎng)址:http://muchs.cn/article28/hgejjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、、網(wǎng)站改版、品牌網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站建設(shè)

廣告

聲明:本網(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)

網(wǎng)站建設(shè)網(wǎng)站維護公司