常量字符串与存放在栈中的字符串是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指向的是栈中合法的地址,字符串存放于栈中,是可以被更改的