int *p 与*p的区别
时间: 2024-08-26 16:00:37 浏览: 89
`int *p` 和 `*p` 是 C/C++ 中的指针语法,它们有显著的不同:
1. `int *p`:这是一个声明,它定义了一个名为 `p` 的变量,这个变量是一个指向整数的指针。这里的星号(*)表示指针,所以 `int *` 表示 `p` 将存储一个整数的地址。
2. `*p`:这是解引用操作,当你在表达式中使用 `*p` 时,实际上是访问 `p` 所指向的那个整数值。星号再次出现在这里,意味着取 `p` 指向的内存位置上的值。
简而言之,`int *p` 定义了指针,而 `*p` 是通过该指针获取实际的值。举个例子,如果 `p = &x;`(`&x` 是 x 变量的地址),那么 `*p` 就等于 `x` 的值。
相关问题
int a=0;int *p = a; 和 int *p = &a; 这里int *p=a;与int *p=&a;有什么区别?
在C++中,int a=0; 表示定义了一个整型变量a并将其初始化为0。
而 int *p = a; 表示将整型变量a的值赋值给一个指向整型数据的指针p。但是这是错误的,因为指针变量p需要存储一个地址,而不是一个整型值。因此,这个语句会编译失败。
相反,int *p = &a; 表示将整型变量a的地址赋值给一个指向整型数据的指针p。这是正确的用法,并且p指向的是整型变量a的地址。
因此,int *p = a; 和 int *p = &a; 语句之间的区别是,前者将整型值赋值给指针变量,而后者将整型变量的地址赋值给指针变量。
给下列表达式写注释:*(p--),*(--p),(*p)--,--(*p),int *p; int*p[5];int (*p)[5];int (*p)(); int f(); int *p(); int **p;
- `*(p--)`: 先将指针 `p` 的值减一,然后取出 `p` 指向的地址的值。
- `*(--p)`: 先将指针 `p` 的值减一,然后取出 `p` 指向的地址的值。
- `(*p)--`: 取出 `p` 指向的地址的值并减一。
- `--(*p)`: 取出 `p` 指向的地址的值减一。
- `int *p;`: 声明一个指向 `int` 类型的指针变量 `p`。
- `int*p[5];`: 声明一个长度为 5 的指针数组,数组中每个元素都是指向 `int` 类型的指针。
- `int (*p)[5];`: 声明一个指向长度为 5 的 `int` 数组的指针变量 `p`。
- `int (*p)();`: 声明一个指向返回值类型为 `int`,无参数的函数指针变量 `p`。
- `int f();`: 声明一个返回值类型为 `int`,无参数的函数 `f`。
- `int *p();`: 声明一个返回值类型为 `int` 类型的指针的函数 `p`。
- `int **p;`: 声明一个指向指针类型为 `int` 的指针变量 `p`。
阅读全文