將數組作為參數傳遞給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
提交
取消
