int *q[2],**p=&q[0];
时间: 2023-10-21 13:24:37 浏览: 47
这段代码定义了一个指针数组 `q`,其中每个元素都是一个 `int` 类型的指针。同时,定义了一个指向 `q[0]` 的指针 `p`,它的类型是 `int **`。换句话说,`p` 是一个指向指针的指针。
需要注意的是,`q` 数组中只有两个指针,因此只能访问 `q[0]` 和 `q[1]`,不能再访问 `q[2]` 及以后的元素。同时,由于 `p` 指向 `q[0]`,因此可以通过 `p` 访问到 `q[0]` 指向的内存空间,即 `q[0]` 存储的地址中所指向的 `int` 类型变量的值。
相关问题
int a = 2; int *q = &a; int *p = q;时为什么q=a不合法
在C++中,&运算符可以获得一个变量的地址,而*运算符可以用来指向一个地址。在你的代码中,int *q = &a; 表示将变量a的地址赋值给指针变量q。因此,q指向了a的地址。
如果你想将q的值赋给a,应该使用 *q = a;,这样会将a的值赋给q所指向的地址中的内容,也就是a本身的值。而 q = a; 不合法,因为它试图将一个整数值赋给指针变量q,这是不允许的。
设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是______。 A *p=*q; B p=q; C *p=&n1; D p=*q;
与`n2=n1;`语句等价的是`*p=*q;`语句。
`*p`表示指针p指向的变量的值,`*q`表示指针q指向的变量的值,因为`q=&n1`,所以`*q`就是n1的值,因为`p=&n2`,所以`*p`就是n2的值,所以`*p=*q`就相当于`n2=n1`。
其余选项的意义如下:
- A *p=*q; 表示将指针q指向的变量的值赋值给指针p指向的变量。
- B p=q; 表示将指针q的值赋值给指针p。
- C *p=&n1; 表示将指针p指向n1的地址。
- D p=*q; 表示将指针q指向的变量的值赋值给指针p。