C语言定义字符串的两种方法的区别,char * s = “aaa” 和 char s[] = “aaa”
一张表看清楚
char s[] = “aaa” | char * s = “aaa” |
---|---|
s是数组 | s 是指针 |
sizeof(s) = 4字节 | sizeof(s) = 8字节 |
(s == &s) 为真 | (s == &s) 为假 |
字符数组存储在栈区 | 变量s存储在栈区,但常量“aaa”存储在全局静态存储区 |
s = "bbb"编译不通过,数组名不是合法的左值 | s =“bbb” 编译通过 |
s++ 不合法 | s++ 合法 |
s[0] = ‘M’ 合法 | s[0] = ‘M’ 不合法,因为只读代码区不可修改 |
有趣的案例
今天在尝试局部变量作用域问题时,写了如下代码
#