字符数组和常量字符串
str1和str2是数组,他们在内存中占用两块不同的空间,所以str1!=str2。str3和str4指向的是常量字符串,他们指向的常量字符串相同,常量字符串存储在内存的只读数据区,不允许修改,如果已经声明了一个常量字符串,如果后续声明相同的常量字符串,不会继续在内存开辟新的空间存放它,而是指向已经存在的常量字符串,这里str3和str4中存储的都是字符串"1234"的首元素地址,所以str3==str4 。有点类似java的字符串常量池。
int main() { char str1[] = ['1', '2', '3', '4']; char str2[] = ['1', '2', '3', '4']; char* str3 = "1234"; char* str4 = "1234"; if (str1 == str2) printf("same"); else printf("not same"); if (str3 == str4) printf("same"); else printf("not same"); return 0; }

浙公网安备 33010602011771号