陣列名作為函式引數以及sizeof用法

2021-07-13 21:56:25 字數 621 閱讀 1174

int f(int

*p,char *a)

int main()

; char a[9]=;

printf("sizeof(p)=%d\n",sizeof(p));

printf("sizeof(a)=%d\n",sizeof(a));

f(p,a);

return

0;}

輸出結果為:

sizeof(p)=20

//5*4 int佔四個位元組

sizeof(a)=9

//char佔1個位元組

p[2]=2,*(p+2)=2

a[2]=2,*(p+2)=2

sizeof(p)=4

//指標佔4個位元組

sizeof(a)=4

//指標佔4個位元組

在《c陷阱和缺陷》中有兩句話:

1.如果我們使用陣列名作為函式引數,那麼陣列名會立刻轉換為指向該陣列第乙個元素的指標。c語言會自動的降作為引數的陣列宣告轉換為相應的指標宣告。

2.除了a被用作運算子sizeof的引數這一情形,在其他所有的情形中陣列名a都代表指向陣列a中下標為0的元素的指標。

陣列名作為函式引數以及sizeof用法

int f int p,char a int main char a 9 printf sizeof p d n sizeof p printf sizeof a d n sizeof a f p,a return 0 輸出結果為 sizeof p 20 5 4 int佔四個位元組 sizeof a...

使用陣列名作為函式引數

主函式中初始化乙個二維陣列,表示乙個矩陣,矩陣,並將每個元素都輸出,然後呼叫子 函式,分別計算每一行的元素之和,將和直接存放在每行的第乙個元素中,返回主函式之 後輸出各行元素的和。include using namespace std void rowsum int a 4 int nrow int...

陣列名作為函式引數時,退化為指標

陣列名作為函式引數時,退化為指標 func char str 100 函式中陣列名作為函式形參時,在函式體內,陣列名失去了本身的內涵,僅僅只是乙個指標 在失去其內涵的同時,它還失去了其常量特性,可以作自增 自減等操作,可以被修改。陣列作為引數傳給函式時傳的是指標而不是陣列,傳遞的是陣列的首位址 在c...