const char *p , char const *p 和 char *const p有什么区别
时间: 2023-09-19 16:09:55 浏览: 47
const char *p, char const *p和char *const p有以下区别:
1. const char *p和char const *p是一样的,它们都是指向常量字符的指针。这意味着指针p指向的字符是不可修改的,但指针本身是可变的,可以指向其他常量字符。也就是说,我们不能通过指针p来修改它所指向的字符的值,但可以通过p来改变它指向的位置。
2. char *const p是一个常量指针,它指向的字符是可变的,但指针本身是不可变的。这意味着指针p不能指向其他位置,但可以通过指针p来修改所指向字符的值。
3. const char *const p是一个既指向常量字符又是一个常量指针。它指向的字符是不可修改的,同时指针本身也是不可变的,不能指向其他位置。
总结来说,const char *p和char const *p都是指向常量字符的指针,但指针本身是可变的;而char *const p是一个常量指针,指向的字符是可变的;const char *const p既指向常量字符又是一个常量指针。
相关问题
char *const p char const *p const char *p有什么区别
这三种声明方式都涉及到const关键字,但它们有不同的含义。
1. `char *const p`:p是一个指向char类型的常量指针,也就是说,p的值(即地址)不能改变,但是p指向的内存中存储的值可以改变。
2. `char const *p`:p是一个指向const char类型的指针,也就是说,p指向的内存中存储的值不能改变,但是p本身的值(即地址)可以改变。
3. `const char *p`:与第二种声明方式相同,p是一个指向const char类型的指针,也就是说,p指向的内存中存储的值不能改变,但是p本身的值(即地址)可以改变。
因此,这三种声明方式的区别在于const关键字出现的位置。第一种声明方式中const出现在*前面,表示指针本身是常量;第二种和第三种声明方式中const出现在*后面,表示指针指向的对象是常量。
const char * p和const * char *p 的区别
`const char * p` 表示指向 `const char` 类型的指针 `p`,即指针指向的内存空间中的数据是只读的,不能被修改,但是指针本身是可以被修改的。
`const * char * p` 表示指向指向 `const char` 类型的指针的指针 `p`,即指针 `p` 指向的是一个指向 `const char` 类型数据的指针,指针 `p` 本身和指向的指针均不能被修改,指向的数据也是只读的,不能被修改。
所以两者的区别是,`const char * p` 是指向只读的 `char` 数据的指针,而 `const * char * p` 是指向只读的指向 `char` 数据的指针的指针。