指针const三个位置
时间: 2023-06-27 13:07:30 浏览: 67
指针const可以有三个位置:const在*左边、const在*右边、以及const在*两边。
1. const在*左边:被const修饰的是指针所指向的变量,即指针指向的对象是不允许修改的。例如:const int* p。
2. const在*右边:被const修饰的是指针本身,即指针指向的地址是不允许修改的。例如:int* const p。
3. const在*两边:被const修饰的是指针所指向的变量和指针本身,即既不能修改指针所指向的对象,也不能修改指针本身。例如:const int* const p。
相关问题
用指针对三个字符串排序
下面是用指针对三个字符串进行排序的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
// 比较函数
int compare(const void *a, const void *b) {
return strcmp(*(const char **)a, *(const char **)b);
}
int main() {
char str1[MAX_LEN], str2[MAX_LEN], str3[MAX_LEN];
char *p[3] = {str1, str2, str3}; // 定义指针数组,指向三个字符串
// 输入三个字符串
printf("请输入三个字符串:\n");
scanf("%s%s%s", str1, str2, str3);
// 排序
qsort(p, 3, sizeof(char *), compare);
// 输出排序后的结果
printf("排序后的结果为:\n");
printf("%s\n%s\n%s\n", str1, str2, str3);
return 0;
}
```
在上述代码中,我们首先定义了三个字符串 `str1`、`str2` 和 `str3`,然后定义了一个指针数组 `p`,使其指向这三个字符串。接着,我们通过 `scanf` 函数分别输入了这三个字符串。
然后,我们调用了 C 标准库中的 `qsort` 函数,对指针数组 `p` 中的元素进行排序。在排序时,我们需要定义一个比较函数 `compare`,该函数的作用是比较两个字符串的大小。因为 `qsort` 函数需要比较任意两个元素的大小,所以我们需要将比较函数的参数类型定义为 `const void *`,并在函数内部将其转换为 `char **` 类型,以便比较两个字符串的大小。
最后,我们输出排序后的结果,即三个字符串按照字典序从小到大排列的顺序。
char * const p char const * p const char *p 上述三个有什么区别
这三个定义都是指向字符的指针,但它们之间有一些微妙的区别:
1. char * const p:这个定义中,const修饰的是指针p,表示p是一个常量指针,即指针p的值不能被修改,但是指针所指向的字符可以被修改。
2. char const * p:这个定义中,const修饰的是字符,表示字符是一个常量,即字符的值不能被修改,但是指针p的值可以被修改,也就是说指针p可以指向其他的字符。
3. const char * p:这个定义中,const修饰的也是字符,表示字符是一个常量,即字符的值不能被修改,同时指针p也是一个常量指针,即指针p的值不能被修改,也就是说指针p不能指向其他的字符。
总之,这三个定义中const的位置不同,所修饰的对象也不同,因此它们之间的区别也不同。需要根据具体的情况来选择使用哪种定义。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)