有代码如下:
#include<stdio.h>
int main(int argc, char const *argv[])
{
char str1[] = "hello world!";
char str2[] = "hello world!";
char* str3 = "hello world!";
char* str4 = "hello world!";
if (str1==str2)
{
printf("str1,str2 same\n");
}else{
printf("str1,str2 not same\n");
}
if (str4==str3)
{
printf("str3,str4 same\n");
}else{
printf("str3,str4 not same\n");
}
return 0;
}
答案是:
原因分析:
1、str1 和str2 在定义的时候,尽管他们的内容是一样的,但是计算机将他们两个字符串赋予了两 个不同的地址空间。
两个数组名就是其字符串的首地址,他们俩在内存中位于不同的位置,一定是不相等的。
2、str3 和str4 在定义时 初始化的字符串是 常量,在内存中只开辟一个空间 但是他们俩都同时指向了这一块空间。