阅读 153

题目:常量字符串与数组存字符串类比

#include<stdio.h>int main(){char str1[] = "hello everyone";char str2[] = "hello everyone";char *str3 = "hello everyone";char *str4 = "hello everyone";if (str1 == str2)//注意这里比的是起始地址,不是内容,比内容要用strcmp{printf("str1和str2两者相同\n");}else{printf("str1和str2两者不同\n");}if (str3 == str4){printf("str3和str4两者相同\n");}else{printf("str3和str4两者不同\n");}return 0;}


请问以上代码输出结果是什么?






上面的代码中,str1和str2均为数组,str3和str4均为常量字符串。
我们知道数组str1和str2是分别开辟了一块内存空间,虽然存储的字符串一致,但地址是不同的,所以第一个应该是str1和str2两者不同
在这里插入图片描述

str3和str4是两个相同的常量字符串,它们是不能被更改的,所以它们不可能重复创建,即如果开辟两个相同的常量字符串,那么它们共同指向的是同一块内存中的首元素地址。所以第二个应该是str3和str4两者相同
在这里插入图片描述
在这里插入图片描述
那么看到这里就有个小问题了,用指针指向常量字符串,如果强制用指针进行修改它,明明不让改的东西被强改了岂不是很危险?

const char *str="hehe";所以建议在前面加上const防止被篡改


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐