int *&a是如何获得的
时间: 2023-12-25 16:06:49 浏览: 32
`int *&a` 是一个指向指针的引用,可以通过如下方式获得:
```c++
void foo(int *&a) {
// do something
}
int main() {
int *p = new int(10);
foo(p); // 传递指向指针的引用
delete p;
return 0;
}
```
在上面的代码中,`foo` 是一个函数,它的参数是一个指向指针的引用 `int *&a`。在 `main` 函数中,创建了一个指向整型变量的指针 `p`,然后将 `p` 作为参数传递给 `foo` 函数。在 `foo` 函数中,可以通过 `a` 访问 `p` 所指向的整型变量,也可以修改 `p` 的指向,如:
```c++
void foo(int *&a) {
// 修改 p 指向
a = new int(20);
}
```
这样,在 `foo` 函数执行完之后,`p` 指向的就是一个新的整型变量,值为 `20`。需要注意的是,在使用指向指针的引用时,需要确保引用的指针是合法的,否则可能会导致错误或者异常。
相关问题
若有定义int a,*p=&i;则*&a等价于( )。
在定义 int a, *p=&a; 后,*&a 等价于 a,即取 a 的地址再取地址,再取值,最终得到的是 a 的值。这是因为 *& 这个操作符本质上是对一个指针进行解引用,也就是取指针指向的地址上的值,而 a 是一个整型变量,而不是指针变量,所以它的地址就是它本身,*&a 就相当于 *(&a),也就是对 a 取地址再取值,最终得到的就是 a 的值。
int **a = (int **)malloc(m * sizeof(int *)); f
根据提供的引用内容,我们可以看出这是一个动态分配二维数组的例子。下面是一个示例代码,其中a[i][j]表示第i行第j列的元素:
```c
int **a = (int **)malloc(m * sizeof(int *));
for (int i = 0; i < m; i++) {
a[i] = (int *)malloc(n * sizeof(int));
}
```
这段代码首先动态分配了一个大小为m的指针数组a,然后对于每个a[i],再动态分配一个大小为n的整型数组。这样就得到了一个m行n列的二维数组。