社区
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 ,我该怎么做?
...全文
204
15
打赏
收藏
对 char* s = "hello" 的理解
是不是让s指针指向此字符串的首地址? 有程序如下: #include using namespace std; int main() { char* s = "hello"; cout << s; return 0; } 如果s为指向字符串的首地址,那么输出的为什么不是16进制地址值? 如果我想从字符串的第二位开始打印,即输出 ello ,我该怎么做?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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;
char
str[ ]和
char
* str
本文探讨了C++中两种字符串表示方式的区别。
char
* str =
hello
创建了一个只读的字符串常量指针,而
char
str[] =
hello
则是在堆栈上创建了一个可写的字符数组。
理解
这两种声明方式的差异对于避免潜在的编程错误至关重要。
C语言中对于
char
*p = “
Hello
”的
理解
本文介绍了C语言中字符串的表示方式及字符数组的初始化方法,并解释了字符指针如何指向字符串及其限制条件。
深入
理解
char
* ,
char
** ,
char
a[ ] ,
char
*a[] 的区别
本文深入解析了C语言中的指针与数组概念,包括它们的本质、如何使用及常见误区。特别关注字符数组和字符指针的区别,帮助读者更好地
理解
和运用。
C语言指针访问越界(
char
*str = “”
Hello
,word”与
char
[ ]=“
hello
,word“的不同之处)
这篇博客讨论了在编程中使用`
char
*str=
Hello
world`与`
char
str[]=
Hello
world`的区别。文章指出,前者可能导致段错误,因为常量字符串存储在不可修改的区域,而后者在栈中分配了内存。作者通过示例代码和运行结果解释了为何数组形式可以避免这个问题,并强调了
理解
内存管理在编程中的重要性。
char
*str1 和
char
str2[]的详解
本文深入解析了C语言中字符串的处理方式,特别是针对
char
*str与
char
str[]的不同之处进行了详细说明,包括内存分配、修改行为及大小计算等方面。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章