const char*
可以理解为一把没有子弹的98K 你可以用它瞄任何人 但是没法用它崩人
被const char*修饰的指针就是一个只读的窗口 可以通过这个窗口看到变量 但是不能对变量进行修改
#include <stdio.h>
int main(void) {
char arr[5] = {'a','b','c','d','e'};
const char* ptr = &arr[0]; // 指向数组第一个位置
// *ptr = 'A'; 报错 不能通过const char*修改变量
arr[0] = 'A'
printf("arr[0] = %c\n", *ptr); // 变量改变后 通过const char*能访问到修改后的值
ptr = &arr[1]; // 指向数组第二个位置
// *ptr = 'B' 报错 不能通过const char*修改变量
arr[1] = 'B'
printf("arr[1] = %c\n", *ptr); // 变量改变后 通过const char*能访问到修改后的值
return 0;
}
char const*
可以理解为一个跟踪器 你可以知道目标在哪 也可以去抓目标 但是一个跟踪器只能跟踪一个目标
被char* const修饰的指针可以读可以修改变量 但是这个指针被初始化后就不能在指向其他变量了
#include <stdio.h>
int main(void) {
char arr[5] = {'a','b','c','d','e'};
char* const ptr = &arr[0]; // ptr指向数组第一个元素
*ptr = 'A'; // 可以通过ptr修改变量
printf("arr[0] = %c\n", *ptr);
// ptr = &arr[1] 报错 不能指向别的变量
return 0;
}