gpt4 book ai didi

c - 递增一个空指针

转载 作者:太空宇宙 更新时间:2023-11-04 05:30:20 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
void * arithmetic

大家好,我有一个关于 C 中指针递增的小问题。首先,我知道 ptr++,其中 ptr 是一个指针,它会递增大小(*指针)。我还知道,在执行 *ptr 时,编译器知道它必须从内存中获取 sizeof(*ptr) 字节。

第二部分帮助我理解为什么以下甚至不能编译:

int main(){
int a = 3;
void* b = &a;
printf("%d\n", *b);
return 0;
}

因为编译器不知道void类型变量的大小。但是,我对以下代码有点困惑:

int main(){
int a = 3;
void* b = &a;
printf("%p\n", b);
b++;
printf("%p\n", b);
}

所以,我的两个问题是:

  1. 编译器如何知道应该将 b 递增多少?

  2. 为什么只增加一个字节(至少在我的机器上是一个字节)?

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