gpt4 book ai didi

c - 关于 sizeof() 和分配的内存

转载 作者:行者123 更新时间:2023-11-30 18:23:30 26 4
gpt4 key购买 nike

假设我有以下代码:

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)。

最佳答案

当您向指针添加值时,生成的指针指向不同的数组元素。在本例中,a 指向数组索引 0,因此 a + 1 指向数组索引 1。

当您将一个指针与另一个指针相减时,结果就是数组索引的差值。因此,无论指针的类型如何,b 始终为 1。将 a 更改为 double * 类型不会改变结果。

关于c - 关于 sizeof() 和分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54848352/

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