社区
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 ,我该怎么做?
...全文
154
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;
MySQL 数据类型和运算符
Re: MySQL 数据类型和运算符=============================# 数据类型 整数类型:五种 TINY SMALL MEDIUM INT BIG 浮点和定点小数类型:三种 FLOAT DOUBLE DECIMAL 日期与时间数据类型:五种 YEAR -1 字符串类型:二种
CHAR
(M) VAR
CHAR
(M) -1 二进制字符串:位字段BIT 固定BINARY 可变VARBINARY -1 # 运算符 算术 运算符 比较 运算符 逻辑 运算符 位操作 运算符 运算符的优先级-------------------------------------
char
*s = “
hello
” 和
char
s[] = “
hello
” 的区别
char
*str = “
hello
”表示在动态变量区开辟一个存放指针的存储单元,指针变量名为str,这个str指向常量区的”
hello
”,因此不能更改这个字符串的值,比如 str[0]='e’这样不行。
char
str[] = "
hello
"表示在动态变量区开辟一个能连续存放6字节的字符串数组,str是数组名称,其数组内容可以被修改,定义在函数中因为是局部变量不能return。 ...
C语言中对于
char
*p = “
Hello
”的
理解
根据《程序设计基础(C语言)》(第二版) 编著:高克宁 对字符串在第139页叙述: C语言中,字符串需要使用字符数组保存和描述。由于每个字符串都要以空字符('\0')结束,因此,声明一个存储字符串的字符数组时,必须保证字符数组的长度比字符串的长度至少多一个,用以存储字符串的结束符'\0'。 常用的以字符串做初值进行字符数组初始化的方式为:
char
c[] = {"
Hello
"}; 或...
字符串赋值给字符指针(
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...
C++ 语言
64,641
社区成员
250,579
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章