(int*) p[5]
时间: 2024-03-25 16:20:16 浏览: 6
这个表达式的含义是,定义了一个指针数组 `p`,该数组有 5 个元素,每个元素都是指向 `int` 类型的指针。注意,这里只是定义了一个指针数组,还需要为每个元素分配内存空间或者让其指向某个已有的 `int` 变量才能使用。同时,需要注意优先级问题,`p[5]` 实际上是 `*(p+5)` 的简写,表示访问 `p` 数组的第 6 个元素,但是由于它是在指针类型 `int*` 前面加了括号,所以实际上是定义了一个指向 `int*` 类型的变量,而不是访问数组元素。
相关问题
int* p与 int *p
int* p与int *p是等价的,都表示定义一个指向int类型的指针变量p。星号可以靠近int或者靠近p,没有区别。这是因为星号是用来修饰p的,而不是修饰int。所以int* p和int *p都是有效的写法。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [int* p;和int *p;应怎样理解(c++语言中星号的位置)?](https://blog.csdn.net/qiuyeyijian/article/details/88080549)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [C语言中指针 int *p=0;和int *p;*p=0;和”&“的关系和区别详解](https://download.csdn.net/download/weixin_38537941/14851842)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
int **p;int *p的表达是否正确
int **p; int *p的表达是正确的。
在C语言中,int **p表示一个指向指针的指针,而int *p表示一个指向整型变量的指针。这两种表达方式都是合法的,但它们的含义是不同的。
int **p表示p是一个指向指针的指针,也就是说p存储的是一个指针的地址。而int *p表示p是一个指向整型变量的指针,也就是说p存储的是一个整型变量的地址。
下面是一个示例代码,演示了int **pint *p的用法:
```c
#include <stdio.h>
int main() {
int a = 10;
int *p = &a;
int **q = &p;
printf("a = %\n", a); // 输出:a = 10
printf("*p = %d\n", *p); // 输出:*p = 10
printf("**q = %d\n", **q); // 输出:**q = 10
return 0;
}
```
在这个示例中,我们定义了一个整型变量a,并将其地址赋给指针p。然后,我们定义了一个指向指针的指针q,并将指针p的地址赋给q。通过*q和**q,我们可以访问到变量a的值。