将数组传递给c中的函数

Abh*_*nyu 0 c arrays function argument-passing

如果我只将一个整数数组的元素(不是整个数组)传递给一个函数,它默认是通过值传递还是通过引用传递?

例如-

arr[]={2,3,4,5,6}
ans=fun(arr[2])
Run Code Online (Sandbox Code Playgroud)

和fun是一个函数,它将任意值乘以2,然后如果我之后在main函数中打印arr [2],我会将ans作为8或4吗?任何帮助,将不胜感激.

Pau*_*per 5

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;
}
Run Code Online (Sandbox Code Playgroud)

您可以传递指针(仍然按值传递给函数,但该值是您感兴趣的值的地址).

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;
}
Run Code Online (Sandbox Code Playgroud)

我怀疑你是指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;
}
Run Code Online (Sandbox Code Playgroud)