加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

传递数组功能

发布时间:2020-12-16 09:57:46 所属栏目:百科 来源:网络整理
导读:如果我在C中有以下内容: void increment_ptr(int *arr_ptr){ int i; for(i=0; i10; 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); } 我是否正确地认为当我在调用increment_ptr后返
如果我在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);
 }

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

解决方法

因为你调用这样的函数:

increment_ptr(arr_ptr);

这会传递指针的副本(按值传递). increment_ptr中的arr_ptr与main中的arr_ptr不同,尽管两者都指向相同的内存位置arr(& arr [0]).从函数increment_ptr修改arr_ptr不会影响main中的arr_ptr.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读