关于c/cpp内存存储中常量与指针的类型

发布时间 2023-04-04 20:17:20作者: __yomi

辨析

下面两种类型

  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); 

上面这个程序就由问题,a为常量区,不能执行更来与strcat向驳

参考

博客园