首先,回顾一下关于const的基础知识;使用const类型的变量被它限制了。一般分几种。。
第一种:const char string=x(赋值);这个string变量的内容就不可以被改变,如果改变了编译器就会报错。
第二种: char * const p=x(赋值);//指针常量--指针本身是常量,指向的地址不可以变化,但是指向的地址所对应的内容可以变化
第三种:const char*p=x(赋值)//常量指针--指向字符串常量,所指向的字符串内容不能变,但是指向的地址可以变化
好我们接下来看个题目:
#include <stdio.h>
int main()
{ const char *c ="zhang";
printf("%s/n",c);
c = "bei";
printf("%s/n",c);
return 0;
}
咋一看肯定有人会说这个是错误的。
在仔细看还是会有人会说这个是错误的。
有人尝试用编译器试试,结果编译器没有报错(说明这个是对的)
那为什么呢?
首先看const char *c ="zhang";
这里指针指向的zhang是不能被改变的(前面基础有讲)。
再是c = "bei";
这里什么变了??
有人会说zhang被改变为了bei
错错错!!!!!
这里只是指针指向的地方改变了,也就是指针变量的内容变了
原来的zhang字符串里面没有一个字符被改变。
就是这样,你对const有没有加深理解了呢!!!