gpt4 book ai didi

c++ - gcc 附加 char* 和 char 作为原始指针 ("str"+ 'c' )

转载 作者:行者123 更新时间:2023-11-30 01:27:28 25 4
gpt4 key购买 nike

gcc 添加 char* (e.g. "STRING") 和 char (e.g. 'C') 作为指针的原因是什么?

  const char *ccc = "Test1";
const char t = 'T';
const char *res = ccc + t;
printf("%s, %p, %d, %p\n", res, ccc, t, res);

输出

  , 0x8048d97, 84, 0x8048deb

我的意思是,您能指出文档、标准规范或文章吗?我可以控制或禁用此行为吗?

UPD:我问的原因和出乎意料的是

  CString() + 'c'

作为

 (char*)CString() + (char)char_var

当编译器找不到合适的运算符 + 时。我想也许可以禁用自动连接并找到所有这些地方(在遗留代码中)。但大多数情况下,我只是想找到该行为的确切文档。

最佳答案

ccc + t 中,t 被视为一个整数。实际效果是 res 指向 ccc 加上 84 个字节,其中 84 是 'T' 的 ASCII 码。

值得指出的是,ccc + t 纯粹对指针进行操作,并不触及实际的字符串。我这样说是为了防止有人认为 "Test"+ 'T' 可能会将字符附加到字符串中——但事实并非如此。

关于c++ - gcc 附加 char* 和 char 作为原始指针 ("str"+ 'c' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8914271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com