我们有以下代码:
#include <stdio.h>
#define LEN 10
int main(void) {
int i;
int array[LEN];
int *p;
for (i = 0; i < LEN; i++) {
array[i] = i;
}
for (p = &array[0]; p < &array[LEN]; p++) {
printf("Address: %p ", p);
printf("Value: %d\n", *p);
}
return 0;
}
它要求我们找出服务器用于存储整数变量的字节数,并将其打印在换行符上,它为我们提供了使用sizeof的提示。
现在,我有点像指针的菜鸟,所以这可能是一个非常快速的问题,但我应该打印:
printf("Size of int: %d", sizeof(p));
或sizeof(*p)
一个打印4,另一个打印8.我倾向于8(它来自简单的p)因为它指的是内存位置,而不是指向它的值的变量,对吧?而8意味着8位,那么1个字节就是答案吗?
答案 0 :(得分:3)
p是指向int的指针,因此sizeof(p)给出指针消耗的字节数。所以你得到的int(你的问题)的大小
sizeof(*p)
答案 1 :(得分:3)
针对您的特定问题的简单解决方案是在类型名称上使用sizeof
:
sizeof(int)
sizeof(int *)
您将获得所需的答案而不会产生任何混淆。