关于c/cpp内存存储中常量与指针的类型
辨析
下面两种类型
char* a = "abc"; //①
char b[] = "123"; //② 123\0
char arr[14] = "ABC"; //③
strcat(arr, a);
上面2与3相同,只是相等一个是预留长度,一个是实体长度,但是好像如果对于2只是声明,没有赋值,那么好像就相等于是指针
分析
1在vs22中是有问题的,确实也不规范,因为abc为const,存储到常量区,你一个变量指针,标准还的是const char* a = "abc"
a只是个指针,如上面定义程序运行就执行到栈区,"abc"为常量
char* a = "abc"; //①
char b[] = "123"; //② 123\0
char arr[14] = "ABC"; //③
strcat(a, arr);
上面这个程序就有问题 “abc” 为常量,在常量区,a指针在栈区,常量不能更改,所以strcat报错
参考
用心做~