首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数组名在内存的存储位置,该如何解决

2012-04-27 
数组名在内存的存储位置#includestdio.hvoid main(void){char str1[] abcchar str2[] abccons

数组名在内存的存储位置
#include<stdio.h>

void main(void)
{

char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char *str5 = "abc";
const char *str6 = "abc";
char *str7 = "abc";
char *str8 = "abc";


printf("%d",str1 == str2);
printf("%d", str3 == str4);
printf("%d", str5 == str6);
printf("%d", str7 == str8);

}
为什么str1 != str2
"abc"都是同一个"abc"吗?都存在静态存储区?

[解决办法]
前面4个都是分配了数组空间的,并且把字符串复制到了数组中。因为分配了4个数组空间,所以4个数组指针不会相等。

后面4个则只是将指针指向常量字符串"abc",编译程序优化后该字符串只在常量区保存了一次。所以4个指针变量里的指针都指向它,指针值当然相等。

热点排行