对 char* s = "hello" 的理解

napoleonpan3 2004-01-16 12:15:53
是不是让s指针指向此字符串的首地址?
有程序如下:
#include <iostream>

using namespace std;

int main()
{
char* s = "hello";
cout << s;
return 0;
}

如果s为指向字符串的首地址,那么输出的为什么不是16进制地址值?
如果我想从字符串的第二位开始打印,即输出 ello ,我该怎么做?
...全文
154 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
uffeng 2004-01-17
  • 打赏
  • 举报
回复
如果想从下一位 开始读 你指针 移一位 就可以了
Yssss1980 2004-01-17
  • 打赏
  • 举报
回复
想打印地址?
这么干
printf("%d",s);
vegapan 2004-01-17
  • 打赏
  • 举报
回复
同意,字符指针的问题
Jinhao 2004-01-16
  • 打赏
  • 举报
回复
char* 比较特殊,都会把他看成字符串,直到'\0'结束
///////////////////////////////////////////////////////////
如果我想从字符串的第二位开始打印,即输出 ello ,我该怎么做?
只需要cout << s+1;

s++;
cout<<s

s是可以改变的,而*s不能,因为char* s="ssss";被编译器翻译成const char* s="ssss";
bluebohe 2004-01-16
  • 打赏
  • 举报
回复
晚了……
playmud 2004-01-16
  • 打赏
  • 举报
回复
puts(s+1);
Wolf0403 2004-01-16
  • 打赏
  • 举报
回复
faint,是 cout << *(s + 1);
sharkhuang 2004-01-16
  • 打赏
  • 举报
回复
char a = *(s+1);
cout<<a;
Wolf0403 2004-01-16
  • 打赏
  • 举报
回复
cout 对 char * 作了重载。
输出 ello: cout << (s + 1);
输出 e: cout << *(e + 1); // 输出的是一个 char 而不是 char *
napoleonpan3 2004-01-16
  • 打赏
  • 举报
回复
那么如果要打印第二个字符呢?也就是输出 e
haoyangmao8 2004-01-16
  • 打赏
  • 举报
回复
cout << s+1;//
oldjackyone 2004-01-16
  • 打赏
  • 举报
回复
问:如果我想从字符串的第二位开始打印,即输出 ello ,我该怎么做?

答:cout << s+1;//让指针从下一个字符开始输出。

wangyangcheng 2004-01-16
  • 打赏
  • 举报
回复
同意雞丁兄的!

#include <stdio.h>
int main()
{
char *_str1 = "abc";
char _str2[] = "def";
_str1[ 2 ] = 'x'; //這一行將無法執行﹗
_str1 = _str2;

puts( ++_str1 );
puts( "\n" );
puts( _str2 );
return 0;
}
cloudtarget 2004-01-16
  • 打赏
  • 举报
回复
"hello"在内存中本身就有地址可寻,要输出第二个开始的后面部分字符串,只要把指向它的地址后移一个字符的位置即可
晨星 2004-01-16
  • 打赏
  • 举报
回复
//如果s为指向字符串的首地址,那么输出的为什么不是16进制地址值?
答:cout碰到字符指针就当作字符串来处理,因为STL的stream类就是这么设计的。

//如果我想从字符串的第二位开始打印,即输出 ello ,我该怎么做?
答:cout << s + 2 << endl;

64,641

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧