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

Posted 凩子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题目:常量字符串与数组存字符串类比相关的知识,希望对你有一定的参考价值。

#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防止被篡改

以上是关于题目:常量字符串与数组存字符串类比的主要内容,如果未能解决你的问题,请参考以下文章

C++内存四大区域

java创建字符串对象 的意思是否就是在堆内存开辟一个空间存放字符串?

C++如何用new动态开辟一个一维字符数组

Java基础知识(JAVA集合框架之List与Set)

字符串常量与 字符指针,字符数组

数组, 数字, 字符串的处理