我知道C中的数组只是指向顺序存储的数据的指针。但是什么不同意味着符号[]和*的不同。我的意思是在所有可能的用法上下文中。例如:char c[] = "test";如果您在函数体中提供此指令,它将在堆栈上分配字符串,而char* c = "test";将指向数据(只读)段。您能否在“所有使用情况”上下文中列出这两种表示法之间的所有差异,以形成清晰的常规视图。
3 回答
千巷猫影
TA贡献1829条经验 获得超7个赞
char c[] = "test";
这将创建一个包含字符串test的数组,因此您可以修改/更改任何字符,例如
c[2] = 'p';
但,
char * c = "test"
这是一个字符串文字,它是一个const char。
因此,对此字符串文字进行任何修改都会使我们产生段错误。所以
c[2] = 'p';
现在是非法的,并给我们带来了段错误。
- 3 回答
- 0 关注
- 1037 浏览
添加回答
举报
0/150
提交
取消