传递数组功能

时间:2015-05-01 09:59:16

标签: c arrays

如果我在C中有以下内容:

void increment_ptr(int *arr_ptr)
{   
    int i;
    for(i=0; i<10; i++)
    {
       arr_ptr++;
    }
}

int main()
{
    int arr[10] = {1,2,3,4,5,6,7,8,9,10};
    int *arr_ptr = arr;

    increment_ptr(arr_ptr);
 }

我是否正确地认为,当我在致电main后返回increment_ptr时,arr_ptr仍然指向arr[0]

1 个答案:

答案 0 :(得分:6)

因为您调用了这样的函数:

increment_ptr(arr_ptr);

这会传递指针的副本(按值传递)。 arr_ptr中的increment_ptrarr_ptr中的main不同,但两者都指向相同的内存位置arr&arr[0])。修改功能arr_ptr中的increment_ptr不会影响arr_ptr中的main

要从arr_ptr修改main中的increment_ptr,您需要将arr_ptr的地址传递给increment_ptr int**(指向int)指针的指针