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

关于c语言中字符串的存储有关问题

2012-04-03 
关于c语言中字符串的存储问题请问:字符串在内存中是如何存储的?今天看到一个这个题目#include stdio.hin

关于c语言中字符串的存储问题
请问:字符串在内存中是如何存储的?
今天看到一个这个题目
#include <stdio.h>
int main (void)
{
char *s = "abcde";
s += 2;
printf ( "%s\n", s );

return 0;
}

/* 运行结果: cde*/
谁能给我详细解释一下为什么是这个结果, s是指针存储的不是地址吗?为什么可以以字符串的形式输出?

[解决办法]
“abcde”字符串常量自动把首地址给s,s+=2;则地址偏移到指向第三个字符位置。
输出字符串有printf来完把地址起点开始提取字符串并输出显示的。
[解决办法]
知道是一个地址 就从那个地址开始往后读 直到结束符为止,也就是你用%s取的字符串。 *s是直接对那个地址解引用:
“abcde”字符串常量自动把首地址给s,s+=2;则地址偏移到指向第三个字符位置。
输出字符串有printf来完把地址起点开始提取字符串并输出显示的。

热点排行