把常量字符串赋予不同数组和不同指针之间的区别
程序员文章站
2022-08-04 18:18:28
有下面这样一个c语言函数:
int text(void)
{
char str1[]="good good study";
char str2[]="good good...
有下面这样一个c语言函数:
int text(void)
{
char str1[]="good good study";
char str2[]="good good study";
char* str3="good good study";
char* str4="good good study";
if(str1==str2)
printf("same");
else
printf("not same");
if(str3==str4)
printf("same");
else
printf("not same");
}
求输出结果。
答案是第一个输出no same,第二个输出same;
原因是:str1和str2是两个字符串数组,在定义后会给它们分配对应长度字节的空间,之后再把字符串复制到对应的空间,所以它们的数组的地址是不一样的。而str3和str4是指针,初始化时分配的是常量字符串的地址(也就是说该字符串在内存中只有一个拷贝),两个指针都指向同一个地址,所以它们的值也是相等的。