【发布时间】:2020-12-24 20:51:20
【问题描述】:
假设指针大小为 4
#include<stdio.h>
int main()
{
int arr[] = {10, 20, 30, 40, 50, 60};
int *ptr1 = arr;
int *ptr2 = arr + 5;
printf("Number of bytes between two pointers are: %d",
(char*)ptr2 - (char*) ptr1);
return 0;
}
输出:20
在这个程序中,为什么在类型转换中将输出打印为 sizeof 指针?为什么不打印 5?
【问题讨论】:
-
它还应该打印什么?使用调试器,您会得到答案
-
另外,C 和 C++ 是完全不同的语言
-
也许你应该解释一下为什么你认为它应该先打印 5。
-
也许简短的回答是:因为整数是 4 个字节。指针的大小无关紧要。可以是 32 位指针或 64 位指针,它不会改变结果。这仅取决于
sizeof(int)为 4,sizeof(char)为 1。