社区
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 ,我该怎么做?
...全文
210
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
1.对比两种写法 2.
char
*
char
* str = “
hello
”;表示将字符串常量"
hello
"的首地址赋给指针str,所以str指向常量也就是const类型的值,只读而不可写。 3.
char
[]
char
str[] = “
hello
”;表示开辟一片内存空间,首地址为str,并将字符串常量"
hello
"的每一个字符赋值到数组的对应位置,这样定义的字符串str是可写的。 4.结论 第一种写法错误,第二种正确!!!! ...
C++ const
char
* 与
char
* 辨析:从 3 个编译错误案例
理解
常量正确性
本文深入解析C++中const
char
*与
char
*的区别,通过3个典型编译错误案例揭示字符串常量的类型安全重要性。探讨字符串字面量的const属性、内存管理机制及现代C++最佳实践,帮助开发者避免常见陷阱,提升代码的常量正确性和安全性。
C语言中对于
char
*p = “
Hello
”的
理解
根据《程序设计基础(C语言)》(第二版) 编著:高克宁 对字符串在第139页叙述: C语言中,字符串需要使用字符数组保存和描述。由于每个字符串都要以空字符('\0')结束,因此,声明一个存储字符串的字符数组时,必须保证字符数组的长度比字符串的长度至少多一个,用以存储字符串的结束符'\0'。 常用的以字符串做初值进行字符数组初始化的方式为:
char
c[] = {"
Hello
"}; 或...
深入
理解
char
* ,
char
** ,
char
a[ ] ,
char
*a[] 的区别
C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个。。。下面就开始剖析一下这两位的恩怨情仇。。。 1 数组的本质 数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。。 2 指针。 指针
C语言指针访问越界(
char
*str = “”
Hello
,word”与
char
[ ]=“
hello
,word“的不同之处)
今天做笔试题的时候,有一个很简短的代码,看似简单,实则到处都是坑。于是我在笔试后就在编译器上跑了一遍,验证了我的想法。
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章