Ⅰ 超简单的c语言问题
将此段拆开,你会发现pc是char* const类型的,而不是char类型的。
正确的char类型应该写为char pc。
如果你学了字符数组知识的话你会比较好理解下面这些:
const的意义表示不可更改的,是一种修饰词,可以放在类型的前面或者后面,一般是用来修饰指针类型的也就是带'*'的类型(比如char*、int*等)。
关于指针:老师们经常让我把它当门牌号,我当时就是不开窍听不懂,后来看多了,自己试验也就明白了。
指针不同于一般类型,如int、char、bool, 但它却又和这些类型分不开,它里面的内容不是数据,比如int类型里有231、char里有'b'、bool里有false...而指针就是这些数据多了个星号'*',而它的内容是存放这些类型的地址。
地址是啥?举个例子:
int Num = 1000;
int* p;
p = &Num;
好,现在p里就是Num的地址了,你用*p和直接用Num的效果一样。
解释一下:&运算符在这里是取址运算符,顾名思义,就是获取地址的功能
*为引用运算符(好像不叫这个,不过忘记了), 就是通过里面的地址去使用数据的功能
画的有点乱请原谅
每个数据都有地址,无论是定义的变量Num还是字面值"hello"、1233123等都有唯一的地址,通过这些地址用于访问这些值,大多用于数组或者函数调用里。(字面值默认是不可更改的,也就是const修饰词)
注:int* p和int *p或者int * p都是同一个东西,你喜欢哪种写法都可以。使用的时候用*p,赋值除了说的种还有int* p = &Num;
小知识:char*是一个指向字符串(第一个字符)的指针,而字面值"xxxxx"实际就是一个地址(第一个字符的地址),所以直接赋值了。
拓展:const在类型的前面表示使用这个指针的时候,不能*p=...,但可以Num=...,就是不能通过这个指针更改指向数据的内容
const在类型后面的时候表示不能更改这个指针里面的地址,不能int* p = &a然后p=&b,在b这会报错