const int * p1 和 int* const p2的区别
时间: 2023-08-05 18:06:04 浏览: 198
`const int* p1` 和 `int* const p2` 都是指针类型,但是它们的含义不同。
- `const int* p1` 表示指向常量整型的指针,即指针指向的值不能被修改,但是指针本身可以被修改。例如,`p1` 可以指向不同的 `const int` 类型的变量,但是不能通过 `p1` 来修改所指向的值。可以用以下方式定义 `p1`:
```
const int* p1;
```
- `int* const p2` 表示指向整型的常量指针,即指针本身不能被修改,但是指针指向的值可以被修改。例如,`p2` 指向的变量可以被修改,但是 `p2` 本身不能指向其他变量。可以用以下方式定义 `p2`:
```
int x = 10;
int* const p2 = &x;
```
需要注意的是,`const` 关键字可以放在 `*` 的左边或右边,表示不同的含义。如果放在左边,表示指向常量的指针;如果放在右边,表示常量指针。
相关问题
int cmp(const void* p1, const void* p2){ return *(int*)p1 - *(int*)p2;}
这是一个C语言函数,名为cmp,它接受两个指向void类型的指针作为参数(p1和p2)。这个函数的作用是比较通过这两个指针所指向的int类型的值,并返回它们之间的差。这里的*(int*)p1表示取p1所指向内存位置的int值,同理,*(int*)p2取p2指向的int值。如果第一个int大于第二个,返回正值;如果小于,则返回负值;相等则返回0。
int cmp(const void *p1, const void *p2) { int *pp1 = *(int **)p1; int *pp2 = *(int **)p2; return pp1[0] >pp2[0]; }
这是一个用于比较两个指针所指向的整数数组的函数。函数使用了C标准库中的`qsort`函数进行排序。该函数接受两个指向常量指针的指针,这些指针最终会被强制转换为指向整数指针的指针。
在函数内部,`p1`和`p2`被转换为指向整数指针的指针`pp1`和`pp2`。然后,函数返回`pp1[0] > pp2[0]`的比较结果,即判断`pp1`指向的整数是否大于`pp2`指向的整数。
这个函数可以用于对整数数组进行升序排序。
阅读全文