我试图了解用于存储变量和指针、指针-指针和指针-指针-指针的地址的大小。结果有点令人困惑。
这是代码:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main(void)
{
char *** ppptr_string = NULL;
int *** ppptr_int = NULL;
double *** ppptr_dbl = NULL;
char c=0; int i=0; double d=0;
printf("\n %d %d %d %d %d\n", sizeof(&ppptr_string),
sizeof(ppptr_string), sizeof(*ppptr_string), sizeof(**ppptr_string),
sizeof(***ppptr_string));
printf("\n %d %d %d %d %d\n", sizeof(&ppptr_int), sizeof(ppptr_int),
sizeof(*ppptr_int), sizeof(**ppptr_int), sizeof(***ppptr_int));
printf("\n %d %d %d %d %d\n", sizeof(&ppptr_dbl), sizeof(ppptr_dbl),
sizeof(*ppptr_dbl), sizeof(**ppptr_dbl), sizeof(***ppptr_dbl));
printf("\n sizeof(char) = %d, sizeof(int) = %d, sizeof(double) = %d",
sizeof(c), sizeof(i), sizeof(d));
printf("\n sizeof(&char) = %d, sizeof(&int) = %d, sizeof(&double) = %d",
sizeof(&c), sizeof(&i), sizeof(&d));
getch();
return 0;
}
现在混乱。我可以看到这台机器上的变量地址总是 2 个字节长。无论变量的类型如何,无论它是否是指针变量。但是为什么我在这里得到这么多条目的大小为 4 呢?无论类型如何,指针的大小始终为 4。存储变量的 >address< 的大小为 2。指向的内容的大小取决于类型。
为什么我在 sizeof 的输出中得到 4s?
我的 Borland C++ 5.02 输出