C語言中
站在用戶的角度思考問題,與客戶深入溝通,找到沂水網(wǎng)站設(shè)計與沂水網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站制作、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、主機域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋沂水地區(qū)。
指針做函數(shù)參數(shù)傳遞二維數(shù)組有兩種基本方法:
1、傳遞“數(shù)組指針”
#include stdio.h
void output( int (*pa)[3], int n )//這個函數(shù)只能輸出n行3列的二維數(shù)組
{
int i,j;
for( i=0;in;i++ ){
for( j=0;j3;j++ )
printf("%d ", pa[i][j] );
printf("\n");
}
}
void main()
{
int a[2][3]={
{1,2,3},
{4,5,6}
};
output(a,2);
}
2、傳遞“指針數(shù)組”
先將二維數(shù)組的行指針存儲到一個指針數(shù)組中,再將指針數(shù)組傳遞到子函數(shù)中去。
#include stdio.h
void output( int *pa[], int row,int col ) //這個函數(shù)更通用,但調(diào)用前,要做好準備工作。
{
int i,j;
for( i=0;irow;i++ ){
for( j=0;jcol;j++ )
printf("%d ", pa[i][j] );
printf("\n");
}
}
void main()
{
int a[2][3]={
{1,2,3},
{4,5,6}
};
int i;
int *pa[2];
for( i=0;i2;i++ )
pa[i]=a[i];
output(pa, 2, 3);
}
數(shù)組名就是指針,例如:
#include stdio.h
void?pr(char *p)
{
printf(p);
}
void main(void)
{
char s[] = "abc";
pr(s);
}
擴展資料:
注意事項
非數(shù)組類的聲明盡量以指針的方式進行比較好。倘若一個指針指向的內(nèi)存并不是一個數(shù)組,那么采用數(shù)組名的聲明方式或許就會給人產(chǎn)生錯誤的引導(dǎo)。類似的,如果指向的是一個數(shù)組區(qū)域,則會給人以更加豐富的信息。例如:
int main(int argc,char* argv[])
{
/* code here */
}
與
int main(int argc,char** argv)
{
/* code here */
}
兩種方式完全等價,但是前面一種能夠更清晰地看出:這個參數(shù)是指向某個元素起始地址的指針,而后面的這種方式則不能夠直觀地看出這種含義。
問題在你這個函數(shù)的定義參數(shù)void find(float a[],float *pmax,float *pmin)
你在函數(shù)內(nèi)對后2個參數(shù)直接進行了賦值。
{pmax=a[t];}
if(a[t]*pmin)
{pmin=a[t];}
你在函數(shù)內(nèi)賦值并不會被外部的參數(shù)造成影響,你需要把用指針的引用才行
float* pMax, float* pmin
這樣在函數(shù)內(nèi)的賦值才有效果
這是個函數(shù)指針 前面的void為返回值類型 后面的void*為參數(shù)類型.
函數(shù)指針是可以作為某個函數(shù)的參數(shù)的.
(1) 指向函數(shù)的指針變量的一般定義形式為:
數(shù)據(jù)類型 (*指針變量名)(函數(shù)參數(shù)列表)
函數(shù)名是可以缺省的 作為參數(shù)傳遞的時候會去調(diào)和 void*(*)(void*)這個類型相匹配的函數(shù)的
作為參數(shù)調(diào)用這個函數(shù)的時候 返回類型是void* 就相當于傳了一個參數(shù)類型為void*,當然這個函數(shù)指針的參數(shù)也是void*的
你的地址值傳遞錯誤,按照我給你修改的試試看,一定要注意你的實參傳遞的是地址還是具體的值,如果是地址,在子函數(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;
}
}
選D
因為第一個參數(shù)是地址傳遞,fun(b,a);中傳入a字符。*c=*c+1將c的值變?yōu)閎字符。主函數(shù)的值改變。
第二個參數(shù)是值傳遞,所以在函數(shù)中d的值為B字符。但是并不影響主函數(shù)的值,所以主函數(shù)輸出a的值是A。b的值是b。
新聞標題:c語言函數(shù)指針傳參數(shù),c語言指針作為函數(shù)參數(shù)傳遞
轉(zhuǎn)載來于:http://jinyejixie.com/article18/hsojgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、、響應(yīng)式網(wǎng)站、網(wǎng)站制作、定制開發(fā)、品牌網(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)