ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

将新值传递并分配给指针C

2019-10-12 09:05:27  阅读:187  来源: 互联网

标签:c pointers reference function-calls


我正在传递一个指向函数的指针.我想为函数内传递的指针分配一个新地址,并且我希望在函数返回后使用该地址.我不确定是否可行,但是我想这样做:

int main()
{
    int i = 100, j = 200;
    int * intPtr = &i;
    foo(intPtr, j);
    //  I want intPtr to point to j, which contains 200 after returning from foo.
}

void foo( int * fooPtr, int & newInt )
{
    int * newIntPtr = &newInt;
    fooPtr = newIntPtr;
}

这是可能的,还是intPtr从foo返回后将不维护新的赋值?这行得通吗(如果不行,为什么)?

解决方法:

传递对指针的引用:

无效foo(int *& fooPtr,int& newInt)

您的方法不起作用的原因是您要传递指针按值.传递值会在函数内创建一个临时项,因此一旦函数返回,对该临时项的任何更改都会消失.

没什么不同:

void foo(int x)
{
   x = 10;
}

int main()
{
   int a = 0;
   foo( a );
   // a is still 0, not 10
}

a通过值传递,因此foo()函数在函数内将参数更改为10.但是,您会看到函数返回后,in main不会更改为10.

要更改a,您需要通过引用传递int:

void foo(int& x)
{
   x = 10;
}

int main()
{
   int a = 0;
   foo( a );
   // a is now 10
}

标签:c,pointers,reference,function-calls
来源: https://codeday.me/bug/20191012/1899324.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有