當前位置:首頁 » 編程語言 » c語言中函數的指針參數傳遞
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中函數的指針參數傳遞

發布時間: 2022-01-22 06:00:49

⑴ 請問在c語言中,函數傳參時怎樣利用指針傳遞數組

數組名就是指針,例如:

#include <stdio.h>

voidpr(char *p)

{

printf(p);

}

void main(void)

{

char s[] = "abc";

pr(s);

}

(1)c語言中函數的指針參數傳遞擴展閱讀:

注意事項

非數組類的聲明盡量以指針的方式進行比較好。倘若一個指針指向的內存並不是一個數組,那麼採用數組名的聲明方式或許就會給人產生錯誤的引導。類似的,如果指向的是一個數組區域,則會給人以更加豐富的信息。例如:

int main(int argc,char* argv[])

{

/* code here */

}

int main(int argc,char** argv)

{

/* code here */

}

兩種方式完全等價,但是前面一種能夠更清晰地看出:這個參數是指向某個元素起始地址的指針,而後面的這種方式則不能夠直觀地看出這種含義。

⑵ C語言中指針變數如何向函數中傳遞

指針變數中存儲的也是一個值, 比如子函數收到傳遞來的參數值為:3647829, 可以是數值, 也可以是指針地址, 就看你子函數定義成什麼類型的參數

⑶ 關於c語言中指針的指針作為函數參數的問題

clrscr()當然不能用啊 如果你是在VC6.0的環境中編譯的話
這個函數只能在TC中用,在VC中就不能用了
如果用Turboc2.0的話,我記得不用包含那個頭文件,直接就可以用的。它是C的圖形函數,C++里不能用了。
你是不是以前用TC寫程序啊?我也是,剛轉成VC時也不太習慣。VC6.0里包含#include <stdlib.h> 這個文件,想刷屏時就system("cls"); 便能起到相同的效果。

⑷ 關於C語言函數參數中指針傳遞的疑問

OS_EVENT應該是一個結構體的名字把 OS_EVENT*pevent表示L是指向OS_EVENT類型的結構體的指針 這個時候用OS_EVENT->(屬性)

OS_EVENT L表示L就是一個OS_EVENT類型的結構體 這個時候用OS_EVENT.num

⑸ C語言用指針作函數參數

選D
因為第一個參數是地址傳遞,fun(&b,a);中傳入a字元。*c=*c+1將c的值變為b字元。主函數的值改變。
第二個參數是值傳遞,所以在函數中d的值為B字元。但是並不影響主函數的值,所以主函數輸出a的值是A。b的值是b。

⑹ C語言 使用子函數的函數參數傳回指針的方法

樓主的意思就是C裡面是怎麼帶回返回值的?
void fun( int *p )
{
.....
}
void main()
{
int a = 0;
fun( &a );
}

⑺ C語言中指針作為函數參數的問題。

更正以下樓主的問題補充,swap函數的兩個參數,定義的時候,定義p1和p2,他們都int*類型的,也就是兩個整型指針的類型。主函數傳遞進來的是a和b的地址,swap函數是將兩個地址的值,也就是*p1和*p2交換,達到的效果是將兩個地址上的值交換

⑻ C語言中 局部指針變數傳給函數參數的過程

沒列印
直接掛掉
你的P沒有初始化 是野指針
於是ptr的值也就是隨機值
賦值*ptr導致野指針賦值,非法訪問,掛掉。

⑼ C語言中 指針做函數參數傳遞二維數組

#include <stdio.h>

void fun(int (*p1)[3],int (*p2)[3]);

int main()

{

int p1[3][3]={{7,8,9},{4,5,6},{1,2,3}} ;

int p2[3][3] = {0};

int i = 0, j = 0;

fun(p1,p2);

for(i = 0;i < 3;i++){

for(j = 0;j < 3;j++){

printf("%d ",*(*(p2+i)+j));

}

printf(" ");

}

return 0;

}

void fun(int (*p1)[3],int (*p2)[3])

{

int i = 0,j = 0;

for(i = 0;i < 3;i++){

for(j = 0;j < 3;j++){

*(p2[j]+i) = *(p1[i]+j);

}

}

}

(9)c語言中函數的指針參數傳遞擴展閱讀:

函數指針的聲明方法為:

返回值類型 ( *指針變數名) ([形參列表]);

其中,「返回值類型」說明函數的返回類型,「(指針變數名 )」中的括弧不能省,括弧改變了運算符的優先順序。若省略整體則成為一個函數說明,說明了一個返回的數據類型是指針的函數,後面的「形參列表」表示指針變數指向的函數所帶的參數列表。例如:

int func(int x); /* 聲明一個函數 */

int (*f) (int x); /* 聲明一個函數指針 */

f=func; /* 將func函數的首地址賦給指針f */

或者使用下面的方法將函數地址賦給函數指針:

f = &func;

賦值時函數func不帶括弧,也不帶參數,由於func代表函數的首地址,因此經過賦值以後,指針f就指向函數func(x)的代碼的首地址。

網路-函數指針

⑽ 關於C語言函數傳遞指針參數,幫我看看我的程序

你的地址值傳遞錯誤,按照我給你修改的試試看,一定要注意你的實參傳遞的是地址還是具體的值,如果是地址,在子函數中就不要去修改你傳遞進來的地址。
int
main(void)
{
int
data=0;
//此處隨機分配內存空間,不要用指針
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;
//此處,只是在同一個內存空間修改其值,所以不要取地址
top=cursor;
return
data;
}
}