c++函数参数为指针,为啥传递回来是空
时间: 2023-11-04 12:34:59 浏览: 76
如果您的函数参数为指针,但是在函数中传递的值为空,则可能有以下几个原因:
1. 在函数调用前没有为指针变量分配内存空间,导致指针变量没有指向有效的内存地址,因此在函数内部访问指针变量所指向的内存空间时会出现错误。
2. 在函数中修改了指针变量的指向,使它指向了一个空地址,从而导致指针变量所指向的内存空间为空。
3. 函数传递的指针参数没有使用引用传递(&),导致在函数内部修改指针变量的值只是对指针变量本身进行了修改,而没有影响到外部的指针变量。
为了避免出现上述问题,您可以在函数调用前为指针变量分配内存空间,并将指针变量的地址传递给函数;或者使用引用传递(&)来传递指针参数,以便在函数内部修改指针变量的值能够影响到外部的指针变量。
相关问题
c++函数的指针参数怎么使用引用传递
在 C++ 中,使用引用传递函数的指针参数需要使用指针类型的引用。具体步骤如下:
1. 定义函数
首先要定义函数,例如:
```
void func(int* &ptr) {
// ...
}
```
上述代码定义了一个名为 `func` 的函数,该函数的参数为一个指针类型的引用,类型为 `int*&`。
2. 在函数内部使用指针
在函数内部使用指针时,可以直接使用引用传递的指针,例如:
```
void func(int* &ptr) {
*ptr = 123; // 修改指针指向的值
}
```
上述代码中,使用引用传递的指针 `ptr`,并修改了其指向的值为 `123`。
3. 调用函数
调用函数时,需要传递一个指针类型的引用,例如:
```
int* ptr = nullptr;
func(ptr);
```
上述代码中,定义了一个指针变量 `ptr`,并将其传递给函数 `func`。
以上就是使用引用传递函数的指针参数的步骤。需要注意的是,在使用引用传递函数的指针参数时,需要确保指针指向的内存空间已经分配,否则可能会导致指针访问非法内存空间。
c++,函数参数为指针,传入一个指针类型,为何此参数返回指向还是为空
如果您传递一个指针类型的参数给函数,并在函数中修改了指针所指向的值,但是在函数外部访问该指针时发现其指向为空,可能有以下几个原因:
1. 指针参数传递时没有使用引用传递(&),导致在函数内部修改指针变量的值只是对指针变量本身进行了修改,而没有影响到外部的指针变量。
2. 在函数内部修改了指针变量所指向的内存空间的值,但是没有修改指针变量本身的值,从而导致函数返回后外部指针变量仍指向原来的空地址。
3. 在函数内部修改了指针变量的值,使其指向了一个新的内存地址,但是该地址在函数外部无效,从而导致外部指针变量仍指向原来的空地址。
为了避免出现上述问题,您可以在函数中使用引用传递(&)来传递指针参数,以便在函数内部修改指针变量的值能够影响到外部的指针变量;或者将指针参数作为函数返回值返回,并在函数内部分配内存空间和设置指针指向,确保返回的指针指向的内存空间有效。