【发布时间】:2019-07-17 19:16:43
【问题描述】:
假设我有以下代码:
int main() {
char *a = malloc(4 * sizeof(char));
int b = 0;
b = (a + 1) - a;
printf("%d\n", b); // Why does this equal sizeof(char) ?
}
我真的不明白b = (a + 1) - a 是如何等于sizeof(char) 的。如果我将它从 char* 更改为 double*,那么它将是 sizeof(double)。
【问题讨论】:
-
在 64 位机器上,
a大于b可以容纳的大小。不管anypointer + 1 - anypointer是什么??:)(例如next address - current = sizeof type) -
" 如果我将它从 char* 更改为 double*,那么它将是 sizeof(double)。" - 尝试并报告
-
我试过了,我仍然得到 1,即使在将 a 转换为 (double*) 所以它是
double * a = (double*)malloc(4*sizeof(double))我得到 1。我的教授错了吗?