將數組作為參數傳遞給C中的函數我編寫了一個包含數組作為參數的函數,并通過傳遞數組的值來調用它,如下所示。void arraytest(int a[]){
// changed the array a
a[0]=a[0]+a[1];
a[1]=a[0]-a[1];
a[0]=a[0]-a[1];}void main(){
int arr[]={1,2};
printf("%d \t %d",arr[0],arr[1]);
arraytest(arr);
printf("\n After calling fun arr contains: %d\t %d",arr[0],arr[1]);}我發現雖然我在打電話arraytest()函數通過傳遞值來實現,該函數的原始副本是int arr[]都變了。你能解釋一下為什么嗎?
3 回答

夢里花落0921
TA貢獻1772條經驗 獲得超6個贊
void arraytest(int a[])
void arraytest(int *a)

慕的地10843
TA貢獻1785條經驗 獲得超8個贊
sizeof a
與 sizeof (&a[0])
.&a
與 &(&a[0])
(與 &a[0]
).char b[] = "foo"
與 char b[] = &("foo")
.

犯罪嫌疑人X
TA貢獻2080條經驗 獲得超4個贊
int func(int arr[], ...){ . . .}int func(int arr[SIZE], ...){ . . .}int func(int* arr, ...){ . . .}
因此,您正在修改原始值。
- 3 回答
- 0 關注
- 733 瀏覽
添加回答
舉報
0/150
提交
取消