char *const p char const *p const char *p有什么区别
时间: 2023-09-19 15:09:53 浏览: 86
这三种声明方式都涉及到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出现在*后面,表示指针指向的对象是常量。
相关问题
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的位置不同,所修饰的对象也不同,因此它们之间的区别也不同。需要根据具体的情况来选择使用哪种定义。
const char *p , char const *p 和 char *const p有什么区别
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既指向常量字符又是一个常量指针。
阅读全文