当我在 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/