为什么“string”被认为是C语言中的“常量”?

时间:2016-03-11 10:11:16

标签: c string string-literals

为什么“string”属于C语言中的常量类别?即使它没有与之关联的数值,也不像“字符常量”,它具有与之关联的固定积分值(ASCII值)。 在什么引用中,字符串被认为是C语言中的常量?

2 个答案:

答案 0 :(得分:0)

因为它是文字,并且认为文字不可变。

考虑一个例子

char *s = "Shubhamdubey2111";
char name[strlen( s ) + 1];

strcpy( name, s );

//...

*s = 'C';

//...

if ( strcmp( name, "Shubhamdubey2111" ) == 0  )
{
    // Oops! Do not trust your eyes!
}

答案 1 :(得分:0)

字符串文字存储在进程的初始化只读内存区域中。这就是原因,不能修改字符串文字。