指针不是只能保存地址吗,char *ptr = "hello world";这行不报错有点不理解
11. 单选题
关于下面程序的说法,正确的是:
char *getString(void){
char *ptr = "hello world";
printf("%s\n", ptr);
return ptr;
}
int main(){
char *p = getString();
char *q = “heihei”;
memcpy(p, "hahahaha", 8);
printf("%s, %s\n", p, q);
}
参考解析:
函数getString返回常量字符串的地址,因为常量字符串在常量区不可更改,所以程序会触发段错误崩溃
指针不是只能保存地址吗,char *ptr = "hello world";这行不报错有点不理解
11
收起
正在回答
1回答
这行代码的意思是定义指针变量,并对它初始化,正常来说,因为指针变量只能存放地址,所以这里赋值字符串是不行的,但是编译器会把字符串存放在变量区,把字符串存放在常量区的地址存放到指针变量中。由于常量区不可以更改,所以在使用的时候,*p='x'会导致程序产生段错误!
物联网/嵌入式全能工程师(提薪优选)
- 参与学习 543 人
- 提交作业 589 份
行业热门,政策风口,人才缺口极大,现在入场时机正好! 上千人检验,数轮迭代的硬核知识体系,0基础友好入行/转行 保姆式教学+简历指导+1V1模拟面试+3次内推,助力轻松就业!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星