地址转换为 int 指针后,打印出的是字符串第一个字符的地址 还是字符串开始的地址?

2017-12-26 09:24:33 +08:00
 RDF
地址转换为 int 指针后,打印出的是字符串第一个字符的地址 还是字符串开始的地址?
cout << (int *)"Home of the jolly bytes"<<endl;
2780 次点击
所在节点    程序员
37 条回复
tghgffdgd
2017-12-26 09:33:15 +08:00
你发帖这么久时间自己试一下早就知道答案了,程序员多练习很重要。
RDF
2017-12-26 09:52:47 +08:00
@tghgffdgd 不会判断打印出的是字符串第一个字符的地址 还是字符串开始的地址。
RDF
2017-12-26 09:54:15 +08:00
@tghgffdgd 似乎在部分实现中,其开始的地址显示相同,而进行‘+1 ’的操作后,可以看出内存增量的不同, 但 cout 形式的话,不会判断。
justou
2017-12-26 10:00:14 +08:00
int* 加 1 后是移动了 sizeof(int)个字节了
xiubin
2017-12-26 10:01:12 +08:00
字符串首地址不就是第一个字符的地址吗?

没了解过 cpp,只学过 c
tghgffdgd
2017-12-26 10:07:31 +08:00
@RDF +1 操作看指针类型,char*是加 1,int*是加 4 你本地多写几个例子然后打出来看看应该就很容易理解了
amaranthf
2017-12-26 10:14:32 +08:00
用了这么多年 C++,还不知道字符串的起始地址和字符串首字符的地址有啥区别……
changnet
2017-12-26 10:19:53 +08:00
我也觉得这两个地址是一样的啊
RDF
2017-12-26 10:21:31 +08:00
@tghgffdgd 嗷嗷,谢谢~
fxxkgw
2017-12-26 10:30:00 +08:00
感觉这个问题是科班还是培训机构或者转行最好的判别题目之一。。
wekw
2017-12-26 11:00:07 +08:00
可能在动态语言程序员眼里,数组是一种高级数据结构吧。。。。
Juggernaut
2017-12-26 11:04:02 +08:00
c 里面这样操作就是第一个 int 的地址,p+1 的话移 4byte ;
CPP 不知道怎么操作
RDF
2017-12-26 11:25:42 +08:00
short tell[10];
tell displays &tell[0]
&tell displays address of whole array
地址数字相同,但是含义不一样。
&tell[0], is the address of a 2-byte block of memory
&tell is the address of a 20-byte block of memory

So

tell + 1 adds 2 to the address value
&tell + 1 adds 20 to the address value

......估计还会忘...
RDF
2017-12-26 11:31:00 +08:00
上文是:字符串首字符的地址,读地址,并显示字符,那(int * )强制转换出的,就是 H 字符所在实际内存地址,

......依旧小晕...
facetest
2017-12-26 11:37:14 +08:00
好好上过基础课的就不会来发这种问题
tghgffdgd
2017-12-26 11:46:01 +08:00
@RDF 用多维数组去理解吧,比如 char arr[5][6][7], arr 和 arr[0] 和 arr[0][0] 和 &arr[0][0][0] 几个值相同但意义不一样
RDF
2017-12-26 11:49:45 +08:00
@tghgffdgd 哦哦
RDF
2017-12-26 15:40:38 +08:00
@tghgffdgd 还在啃 Compound Types 符合类型的基础, 这部分的基础有点难啃, 快了。
RDF
2017-12-26 15:40:56 +08:00
@RDF 复合
gnaggnoyil
2017-12-27 10:16:08 +08:00
C++中 const char [N]并不 type alias 于 int *,所以 LZ 这种行为是 UB.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/417604

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX