const char *p、char const *p和char * constp的区别是什么?
前两者可以互换,它们声明了指向字符常量的指针,这意味着不能修改它所指向的字符的值;“char * const p”声明了指向字符的常量指针,这意味着不能修改该指针。
验证代码:
1 #include <stdio.h>
2
3int main(){
4
5 const char *a1;//声明指向字符常量的指针
6 char const *a2;
7 char * const a3;//声明指向字符的常量指针
8 char n='A';
9 a1=a2=a3=&n;//note1
10 *a1='B';//note2
11 *a2='C';//note3
12 *a3='D';//note4
13 return 1;
14 }
编译错误如下:
zzl@SOFT30-46:~/test/test_const$ gcc -gtest_const_point_and_point_const.c -o test_const_point_and_point_const
test_const_point_and_point_const.c: Infunction ‘main’:
test_const_point_and_point_const.c:9:2:error: assignment of read-only variable ‘a3’
test_const_point_and_point_const.c:10:2:error: assignment of read-only location ‘*a1’
test_const_point_and_point_const.c:11:2:error: assignment of read-only location ‘*a2’
结束!