gpt4 book ai didi

c++ - 在 C++ 中从 int* 转换为 char*

转载 作者:太空狗 更新时间:2023-10-29 20:24:17 25 4
gpt4 key购买 nike

  • 第 1 行打印“X”
  • 第 2 行打印 'c'
  • 第 3 行打印 11
  • 第 4 行打印 5。

我明白这些行,但为什么会这样

  • 第 5 行打印 20

?

它不应该打印 11 而不是 20,因为第 1 行和第 2 行打印“X”和“c”。

非常感谢您的帮助。

#include "iostream"
using namespace std;
int main()
{
int arr[] = {88, 20, 30, 40, 50, 99};
int *ptr1 = arr;
int *ptr2 = arr + 5;
cout<<(char*)ptr1<<endl;//line 1
cout<<(char*)ptr2<<endl;//line2
cout<<('c'-'X')<<endl;//line3
cout<<ptr2-ptr1<<endl;//line4
cout<<(char*)ptr2-(char*)ptr1<<endl;//line5

return 0;
}

最佳答案

在编译程序的环境中,sizeof( int ) 等于4。即每个int类型的对象占用4个字节(字符)。在 ptr2 和 ptr1 之间有 5 个整数。指向同一个数组元素的两个指针之差是它们之间的元素个数。这就是所谓的指针运算。因此 ptr2 - ptr1 给出 5。但是如果你将这些指针转换为 char * 类型,那么在这些指针之间有 5 * sizeof( int ) 字符等于 20 .

关于c++ - 在 C++ 中从 int* 转换为 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28737473/

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