存储单元是什么意思呢?存储单元就对应一个内存地址对吗?还是说只要有存储单元才会有地址,有地址就会有存储单元呢? 举个例子,
第一个例子:"Great Wall"为数组里的元素
char s[] ="Great Wall" ;
printf("s[0]地址为%x\n", &s[0]);
printf("s[1]地址为%x\n", &s[1]);
运行结果是:
s[0]地址为0x33fa3c
s[1]地址为0x33fa3d
那么意思就是,G放在了内存地址为0x33fa3c的存储单元里,r放在了内存地址为0x33fa3d的存储单元里,是这样理解对吗?
第二个例子:"Great Wall"为字符串常量。
char *f = "Great Wall";
printf("f值为%x\n", f);
printf("f+1值%x\n", f+1);
运行结果是:
f值为0xb97cb4
f+1值为0xb97cb5
那么意思就是,G放在了内存地址为0xb97cb4的存储单元里,r放在了内存地址为0xb97cb5的存储单元里,是这样理解对吗?问题是,Great Wall是字符串常量了呀,不是说字符串常量没有存储单元吗?那为什么每一个字符都会有地址呢?明明要有存储单元才会有地址吧。