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...