社区
C++ 语言
帖子详情
对 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 ,我该怎么做?
...全文
170
15
打赏
收藏
对 char* s = "hello" 的理解
是不是让s指针指向此字符串的首地址? 有程序如下: #include using namespace std; int main() { char* s = "hello"; cout << s; return 0; } 如果s为指向字符串的首地址,那么输出的为什么不是16进制地址值? 如果我想从字符串的第二位开始打印,即输出 ello ,我该怎么做?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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;
java六大必须
理解
的问题 文档
java六大必须
理解
的问题、内容比较详细、写的比较具体
char
*s = “
hello
” 和
char
s[] = “
hello
” 的区别
char
*str = “
hello
”表示在动态变量区开辟一个存放指针的存储单元,指针变量名为str,这个str指向常量区的”
hello
”,因此不能更改这个字符串的值,比如 str[0]='e’这样不行。
char
str[] = "
hello
"表示在动态变量区开辟一个能连续存放6字节的字符串数组,str是数组名称,其数组内容可以被修改,定义在函数中因为是局部变量不能return。 ...
字符串赋值给字符指针(
char
*a="
hello
")的正确
理解
方式
对于语句
char
*a="
hello
"; 对于这个声明方式,会造成的误解是:声明了一个字符指针(它会指向一个位置),将“字符串”赋值给 指针表达式"*a"所指向的地址。但正解是:声明了一个字符指针后,并用字符串常量的第一个字符的地址赋值给指针变量a。即正确顺序是: 1.分配内存给字符指针; 2.分配内存给字符串; 3.将字符串首地址赋值给字符指针; 这里...
char
*p="abc" 与
char
p[]="abc" 的区别
有这样一段代码:view plaincopy#include "stdio.h"
char
*get_string_1(){
char
p[] = "
hello
world!";return p;}
char
*get_string_2(){
char
*p = "
hello
world!";return p;}int main(){
char
*p;p = get_string_1();printf("g...
char
*、
char
**和
char
***的使用
1、
char
*的使用
char
str[] = "
hello
";
char
* ch = str; printf(" %s",ch); 2、
char
**的使用
char
*str[] = {"
hello
","world"};
char
**ch = str ; printf("%s",ch[0]); 3、
char
***的使用
char
*str[][] = {{"
hello
","world"},{"nihao","shijie"}};
char
***ch= str; print...
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章