The*_*uzz 13 c++ parameter-passing pass-by-reference pass-by-value
我不明白为什么传递指向函数的指针不会改变传入的数据.如果函数proto看起来像这样:
void func( int *p );
Run Code Online (Sandbox Code Playgroud)
和func分配内存到p,为什么不能在函数外部使用?我以为指针是地址?
Oli*_*rth 17
虽然这样的事情符合你的期望:
void func(int *p)
{
*p = 1;
}
int a = 2;
func(&a);
// a is now 1
Run Code Online (Sandbox Code Playgroud)
这不
void func(int *p)
{
p = new int;
}
int *p = NULL;
func(p);
// p is still NULL
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,该函数都使用原始指针的副本.不同之处在于,在第一个示例中,您正在尝试操作基础整数,因为您拥有其地址.在第二个示例中,您直接操作指针,这些更改仅适用于副本.
有各种解决方案; 这取决于你想做什么.
C和C++中的参数按值传递.这意味着,如果自变量的类型是一个指向int
,则该函数接收拷贝的实际指针参数的,同时仍然能够以改变int
被指向.
归档时间: |
|
查看次数: |
19468 次 |
最近记录: |