#include <stdio.h> #include <stdlib.h> int main() { //printf("Hello world!\n"); char a[] = "Hello"; char b[] = "World"; const char *p1 = a; char *const p2 = a; //建立指针 p2 的时候就须要初始化,若是声明(或定义)以后再对其赋值会出现错误 char const *p3 = a; //p1[0] = 'X'; //error, read-only location *p1 p1 = b; //No error when compiled printf("%c\n", *p1); p2[0] = 'X'; //No error //p2 = b; //error, read-only variable p2 printf("%c\n", *p2); p3 = b; //p3[0] = 'X'; //error, read-only location *p3 printf("%c\n", *p3); /* a[0] = 'X'; printf("%s\n", a); printf("%c\n", *p1); //p2 = b; //error: assignment of read-only variable 'p2' p2[0] = 'X'; printf("%s\n", a); //printf("") //p1[0] = 'H'; //这一句会出现编译错误 a[0] = 'H'; //这一句不会出现错误 printf("%s\n", a); return 0; */ return 0; }
/*
总结:
const char * 与 char const *是同样的效果,即指针指向的内容是只读的
char *const 表示指针的内容是只读的,即指针指向的位置是不可修改的,可是指针指向的内存是可读可写的
const char *const pointer 兼有上面两种,即指针指向的位置不可修改,而且指针指向的内容也不能修改
char *const const pointer 与 const char *const pointer 效果相同
主要是看const关键字修饰的是什么
*/spa