函數(shù)定義和函數(shù)調(diào)用是兩個(gè)概念,函數(shù)定義 為f(int *arr),表示參數(shù)是一個(gè)整型指針,因此使用該函數(shù)時(shí)要傳遞一個(gè)地址,如變量int a=0; 調(diào)用函數(shù)f傳遞a的地址時(shí)需要寫(xiě)為f(a);而對(duì)于數(shù)組來(lái)說(shuō),如int b[]=[1,2,3], b本身就是數(shù)組首元素的地址,因此調(diào)用函數(shù)f傳遞數(shù)組首地址需要寫(xiě)為f(b)。
萬(wàn)載ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書(shū)合作)期待與您的合作!
立即數(shù)不能轉(zhuǎn)換成指針,因?yàn)樗辉趦?nèi)存中。(int*)2表示從地址0x02開(kāi)始的int型的地址空間。如果你的函數(shù)形參是指針而實(shí)參卻需要傳遞立即數(shù),說(shuō)明這個(gè)函數(shù)編的是有問(wèn)題的。
如果你一定要傳遞,可以用一個(gè)中間變量存放立即數(shù),然后傳遞該變量的地址。
舉例:
void f(int *p)
{
}
int arr[]={1,2,3};
因?yàn)楹瘮?shù)f的形參是一個(gè)類型為int的指針變量,所以調(diào)用f時(shí),可以將數(shù)組名arr作為實(shí)參傳給形參p。即可以這樣調(diào)用:f(arr);
在C語(yǔ)言,數(shù)組無(wú)論作為參數(shù)還是返回值,都是以指針形式返回或者傳遞的。在數(shù)組中,數(shù)組名字代表的是數(shù)組第1個(gè)元素的地址。比如如下數(shù)組。
int
a[10]
=
{1,2,3,4,5,6};
數(shù)組名a,實(shí)際上相當(dāng)于a[0]。所以,當(dāng)實(shí)參是數(shù)組名,形參是指針變量時(shí),只要保證數(shù)據(jù)類型一致即可傳遞。如下面的示例代碼:
#include stdio.h
void f(int *p, int size) {
for (int inx=0; inx!=size; ++inx) printf("%d\t",p[inx]);
printf("\n");
}
int main()
{
int a[4] = {1,2,3,4};
f(a,4);
return 0;
}