今日刷题之有没有const修饰得数组或指针有什么区别

目录

1.写出下列程序输出结果

1)分析图解:

2)分析过程


1.写出下列程序输出结果

int main()
{
	char str1[] = "abc";
	char str2[] = "abc";

	const char str3[] = "abc";
	const char str4[] = "abc";

	const char* str5 = "abc";
	const char* str6 = "abc";

	const char* const str7 = "abc";
	const char* const str8 = "abc";


	cout << (str1 == str2) << endl;
	cout << (str3 == str4) << endl;
	cout << (str5 == str6) << endl;
	cout << (str7 == str8) << endl;
}

截图:

1)分析图解:

2)分析过程

①str1、str2、str3、str4定义的是数组,都在栈上开辟了四个字节的地址,把abc\0放进去,单独的str1、str2、str3、str4指的是数组的首地址,那么既然是每个数据都开辟了空间,那首地址一定是每个都不一样。

②对于指针str5、str6、str7、str8来说,因为有const,它们共同指向了不能修改的在字符串常量区的相同的字符串的首地址,所以它们是相等的。

猜你喜欢

转载自blog.csdn.net/weixin_62456756/article/details/128183608