gpt4 book ai didi

c - 指针(内存地址)的值如何根据增量的大小而变化?

转载 作者:行者123 更新时间:2023-11-30 16:39:25 25 4
gpt4 key购买 nike

当我在 C 中有一个指针并使用 printf 中的 %x 将其打印出来时,我会收到如下内容:924752f7

现在,如果我将指针增加一个字符的大小,如下所示:

pointer += sizeof(char)

我怎么找回924752fb?如果一个char是一个字节(8位),那不是只增加一个地址,增加后的新值是:924752f8吗?

最佳答案

Sizeof(char) 是 1,因此您将“1”添加到“指针”,并且指针指向下一个位置。但下一个位置取决于指针的类型或指针所指向的变量的类型。它看起来像是指向一个长度为 4 个字节的东西。假设你的指针是这样声明的

char * ptr

打印语句表明加法前ptr指向地址0x2000

   ptr = ptr+sizeof(char) 

相加后指针将指向0x2001。

int * ptr

在此,如果 ptr 在加法之前指向地址 0x2000

ptr = ptr+sizeof(char) 

加法后指针将指向0x2004。(这里假设int是4字节而不是short int)

关于c - 指针(内存地址)的值如何根据增量的大小而变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47063709/

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