天天看點

mysql裡的實參和形參_C語言中 形參 實參 sizeof

這幾天在看一個資料結構的視訊,看到有關形參和實參的問題,發現自己之前的很多了解都不太正确。

比如,我們周遊一個數組,我首先想到是這樣寫的:

int main()

{

int a[] = {1,2,3};

showArray(a);

}

void showArray(int *p){

int len = sizeof(p);

printf("len==%d\n",len);

int i = 0;

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

printf("%d\n",p[i]);

}

}

結果輸出的值是:1,2,3,4200208。前3個值都正确,但是為什麼會多出一個4200208呢?問題就出在sizeof這個關鍵字上。sizeof是一個單目操作符,并不是一個函數,其值在編譯時确定。這裡的p,是一個指針變量,大小始終為4.是以最後會多出一個垃圾數字4200208。

可見,要周遊一個數組,單傳其首位址是不夠的,還需要知道它的大小。正确的程式如下:int main()

{

int a[] = {1,2,3};

int len = sizeof(a)/sizeof(int);

showArray(a,len);

}

void showArray(int *p,int len){

printf("len==%d\n",len);

int i = 0;

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

printf("%d\n",p[i]);

}

}