字符串是有若干字符组成的序列。在C/C++中每个字符都以字符‘\0’作为结尾。为了节省内存,C/C++把常量字符放到单独的一个内存区域。当几个指针赋值给相同的常量字符串时,它们实际上回指向同样的内存地址。但用常量内存初始化数组时,指向的内存地址会不一样。
分析代码:
// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "pch.h"
#include <iostream>
#pragma warning(disable:4996)
using namespace std;
/*
为了节省内存,C/C++把常量字符串单独放到单独的一个内存区域,
当几个指针赋值给相同的常量字符串时,它们实际上会指向相同的
内存地址。但用常量内存初始化数组,情况却有所不同。
*/
int main()
{
char str1[] = "hello world";
char str2[] = "hello world";
const char* str3 = "hello world";
const char* str4 = "hello world";
if (str1 == str2)
cout << "str1 and str2 are same." << endl;
else
cout << "str1 and str2 are not same" << endl;
if (str3 == str4)
cout << "str3 and str4 are same." << endl;
else
cout << "str3 and str4 are not same" << endl;
return 0;
}