const char arr = “123”;
char
brr = “123”;
const char crr[] = “123”;
char drr[] = “123”;
这四个语句的区别:
arr与brr中的字符串保存在常量区,均不可更改,若使用brr更改数据,会产生段错误。在编译时会对brr提出警告warning: deprecated conversion from string constant to ‘char*’
crr与drr均分配在栈区(全局变量则在数据区与常量区),可以通过drr更改数据,某些编译器会编译优化将crr分配到常量区。

指针与数组的区别

指针 数组
保存数据的地址 保存数据
间接访问数据,首先获得指针的内容,然后将其作为地址,从该地址中提取数据 直接访问数据,
通常用于动态的数据结构 通常用于固定数目且数据类型相同的元素
通过Malloc分配内存,free释放内存 隐式的分配和删除
通常指向匿名数据,操作匿名函数 自身即为数据名