返回指针变量的时候加不加*
时间: 2023-06-12 17:06:48 浏览: 103
加不加 `*` 取决于函数的返回值类型。如果返回的是指针类型,那么通常需要加上 `*`,表示返回的是指针所指向的对象。如果返回的是指针的地址,那么通常不需要加上 `*`。在函数内部,需要使用 `*` 来解引用指针,访问指针所指向的对象。例如:
```c++
int* func1() {
int* ptr = new int(10);
return ptr; // 返回指向 int 类型的指针
}
int** func2() {
int* ptr = new int(20);
int** pptr = &ptr;
return pptr; // 返回指向 int* 类型的指针
}
```
在上面的例子中,`func1()` 返回的是一个指向 `int` 类型的指针,因此需要加上 `*`。而 `func2()` 返回的是一个指向 `int*` 类型的指针,因此不需要加上 `*`。在 `func2()` 中,使用 `*pptr` 来访问 `ptr` 指向的对象(即 `int` 类型的值),使用 `**pptr` 来访问 `pptr` 指向的对象(即 `int*` 类型的指针)。
相关问题
指针变量和变量指针有什么区别
指针变量和变量指针是两个不同的概念。
指针变量是指在程序中用于存储内存地址的变量。它可以指向任何数据类型的数据,例如整型、字符型或其他复杂类型的变量。创建一个指针变量时,我们需要指定其目标数据类型,比如int *ptr; 这里的ptr是一个整数指针,它将保存另一个整数变量的地址。
而变量指针则是更通用的说法,通常是指指向其他变量的指针。在这个上下文中,"变量"可以是任何类型的变量。例如,如果有一个函数接受一个变量作为参数,并返回该变量的指针,那么这个返回值就是一个变量指针,如`void (*func)(int) *ptr`,这里*ptr是返回一个整数变量指针的函数的返回类型。
简而言之,指针变量是一般性的术语,而变量指针通常特指函数返回指向其他变量的指针的情况。
指针变量取地址和指针地址
指针变量本质上是一个存储内存地址的变量,它不是直接存储数据,而是存储另一个变量或对象的内存地址。当我们声明一个指针变量时,如`int *ptr;`,这里的`*`表示这是一个指向整数的指针。当我们说“指针变量取地址”时,是指将某个变量的地址赋给这个指针,例如`ptr = &variable;`,其中`&variable`操作符会返回`variable`变量的地址。
另一方面,“指针地址”通常是指指针本身的内存地址。在大多数编程语言中,你可以通过内置的操作符或函数获取到指针的地址,但这通常是内部处理,我们不需要直接访问。获取指针地址的意义不大,除非你在做一些底层的系统级操作或者是调试目的。