如果我只將一個整數數組的元素(不是整個數組)傳遞給一個函數,它是通過值還是通過引用默認傳遞的?將數組傳遞給函數c
用於示例 -
arr[]={2,3,4,5,6}
ans=fun(arr[2])
和樂趣是一些功能,其乘以2的任何值,然後將我得到的ANS爲8或4,如果我打印的常用3 [2]中的主要功能之後?任何幫助,將不勝感激。
如果我只將一個整數數組的元素(不是整個數組)傳遞給一個函數,它是通過值還是通過引用默認傳遞的?將數組傳遞給函數c
用於示例 -
arr[]={2,3,4,5,6}
ans=fun(arr[2])
和樂趣是一些功能,其乘以2的任何值,然後將我得到的ANS爲8或4,如果我打印的常用3 [2]中的主要功能之後?任何幫助,將不勝感激。
C沒有參考文獻。
int fun(int a) {
a = 0;
}
int main() {
int arr[5] = {2, 3, 4, 5, 6};
fun(arr[2]);
printf("%d\n", arr[2]); //prints 4
return 0;
}
您可以通過指針(還是交給由值的功能,但該值是你感興趣的值的地址)。
int fun(int *a) {
*a = 0;
}
int main() {
int arr[5] = {2, 3, 4, 5, 6};
fun(&arr[2]);
printf("%d\n", arr[2]); //prints 0
return 0;
}
我中有你的意思C++懷疑。在這種情況下,函數的簽名決定它是否通過引用傳遞。
int fun(int &a) { //by reference, because of &
*a = 0;
}
int main() {
int arr[5] = {2, 3, 4, 5, 6};
fun(arr[2]);
printf("%d\n", arr[2]); //prints 0
return 0;
}
您的問題被打上c
,所以我會在這方面回答:
在C語言中,沒有傳遞通過引用。我們可以通過傳遞指針來獲得與傳遞引用類似的結果。這就是說,如果你沒有傳遞一個函數指針,那麼你不會改變調用範圍內的值。
void func(int a)
{
a = a * 2; // value of a within the calling scope does not change (pass-by-value)
}
void func2(int *a)
{
*a = (*a) * 2; // value pointed to by a is changed within the calling scope
}
在C數組中作爲指針傳遞給第一個元素。它們是唯一沒有真正通過值傳遞的元素(指針是按值傳遞的,但數組不會被複制)。 這允許被調用的函數修改內容。
當我們傳遞任何數組作爲參數時,重要的是我們如何在被調用的函數中處理它。如果您獲取傳遞值(* val)的地址,那麼它將表現爲傳遞引用(Pass by reference),如果您直接在變量中獲取值(val),則它的行爲將類似於按值傳遞。
嘗試一個小例子? – gongzhitaao
值。 arr [2]是4.假設fun定義爲:int fun(int arg){printf(「%d \ n」,arg);回報(ARG); },有趣的是打印4. – ChuckCottrill
@CommanderCorianderSalamander C沒有參考 – gongzhitaao