【发布时间】:2018-05-05 18:24:48
【问题描述】:
字符串在C编程语言中被称为常量。
所以,当我给出像char *s = "Hello" 这样的语句时,我了解到s 指向H 的内存位置,因为“Hello”存储在程序的某个静态内存中,并且"Hello" 也是不可变的。
这是否意味着变量s 现在是指向常量数据的指针 类型的变量,例如const int a = 3;const int *i = &a;。这似乎是因为我无法操作数据(当我这样做时,会导致分段错误)。
但是,如果是这样,编译器不应该能够检测并说我已将合格数据分配给不合格变量。
char *p p 是指向非限定字符的指针,当我说char *p="Hello" p 时,指向非限定字符的指针不能指向 const 字符类型?
我在这里错过了什么?
如果不是上述情况,那么如何使常量字符数组不可变?
【问题讨论】:
-
variable s不是 const (除非另有说明),您仍然可以使用它来指向其他位置。"Hello"存储在程序的data section部分中,这就是它不可变的原因。