const放在不同位置的不同含义
一、类型说明符前
(一)const char* p; //定义的是一个指向字符型常量的指针变量,const的对象是char
应用举例:
1、指向单个字符c,此时无法通过指针来修改c,但是仍然可以通过c本身来修改c
char c = ‘a’;
p = &c;
printf("%c", *p);
*p=’b’; // 是错误的,程序编译不通过
c=’b’; // 是正确的
2、指向字符型数组str,此时无法通过指针来修改str中的任何一个字符,但仍然可以通过str本身来修改str[i]
char str1[]=”Minapeng666”;
char str2[]=” HappyMina”;
p=str1;
printf("%s", p);
p=str2;
p[0]=’0’;// 是错误的,程序编译不通过
printf("%s", p);
(二)const char* p[]; //定义的是一个指向字符型常量的指针变量数组
二、类型说明符后
(一)char* const p;//定义的是一个指向字符型变量的指针常量,const的对象是p
应用举例:
1、指向单个字符c,不可以修改p指向的地址,可以通过*p的方式来修改c中的值
char c1 = ‘a’;
char c2 = ‘z’;
char* const p = &c1;
*p=’b’;
printf("%c", p);//输出结果为b
p=c2; // 是错误的,程序编译不通过
2、指向字符型数组str,不可以修改p指向的地址,但是可以通过p[i]修改字符数组中的元素
char str1[]=”Minapeng666”;
char str2[]=”HappyMina”;
char* const p=str1;
p[8]=9;
printf("%s", p); //输出结果为Minapeng966
p=str2; // 是错误的,程序编译不通过
(二)char* const p[];//定义的是一个指向字符型变量的指针常量数组