恋恋笔记本好看吗,有赚网,腾格尔简介
有下面这样一个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是指针,初始化时分配的是常量字符串的地址(也就是说该字符串在内存中只有一个拷贝),两个指针都指向同一个地址,所以它们的值也是相等的。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论