為什么數(shù)組中某一個元素的值可以在函數(shù)中被改變,如果是單一變量就不可以?
#include<stdio.h> void?change(int?b) { b?=?5; } int?main() { int?a=3; change(a); printf("%d\n",a); return?0; }
這個代碼執(zhí)行出來的結(jié)果還是3,change函數(shù)里的操作不影響main函數(shù)里定義的a的值
#include<stdio.h> void?change(int?arr1[]) { arr1[0]=?3; } int?main() { int?arr[]={1,2,3}; change(arr); printf("%d\n",arr[0]); return?0; }
但是對于數(shù)組來言,在change函數(shù)里改變了只是作為形參的arr1的一個元素的值,卻影響了在main函數(shù)中定義的arr的第一個元素的值。
求解釋,謝謝
2017-12-28
#include<stdio.h>
void?change(int *b)
{
??? *b?=?5;
}
int?main()
{
????int?a=3;
????change(&a);
????printf("%d\n",a);
????return?0;
}
//這個要用到指針,具體你可以參見Linux C語言 初始指針與內(nèi)存教程的2.1,一樣一樣的
2017-12-27
數(shù)組是分配好內(nèi)存的,是有明確的地址的,所以被調(diào)函數(shù)里的值變了,也就影響了在main函數(shù)中。
如果是第一種,就要把值返回來,用return b
int ?change(int?b)????? //返回類型為整形 ,用int
{
????b?=?5;
????return b??;? //
}
?
int?main()
{
????int?a=3;
????a=change(a);??? //
????printf("%d\n",a);
????return?0;
}