常量字符串的问题

2022-08-19 08:27:19 浏览数 (1)

常量字符串与存放在栈中的字符串是C语言面试中经常出现的问题,这可以考察面试者对于C语言数据存储的理解。 我们通过几个例题来看看常量字符串与存放在栈中的字符串

下面的程序有错误吗?为什么?  void test1() {   char* str="hello word!";   str[0] = 'H'; printf(str) ; } 有错误,因为"hello word!",是一个常量字符串,存放于只读的段中,是不可被修改的!向只读数据段写入数据会产生段错误,那么,我们怎么让这个程序合法呢? void test1() {   char str[]="hello word!";   str[0] = 'H'; printf(str) ; } 这样,程序会为str分配地址,str指向的是栈中合法的地址,字符串存放于栈中,是可以被更改的

0 人点赞