小编kra*_*mbo的帖子

对结构在内存中的位置感到困惑

我正在探索指针,特别是当前正在搞乱结构指针.目前,我有这个代码:

#include <stdlib.h>
#include <stdio.h>

struct point{
double x;
double y;
};

int main(){
    char *pc;
    int *pi;
    struct point *pp;

    //char pointer
    printf("%p\n\n", (void*)pc);
    pc++;
    printf("%p\n\n", (void*)pc);

    //int pointer
    printf("%p\n\n", (void*)pi);
    pi += 2;
    printf("%p\n\n", (void*)pi);

    //struct pointer
    printf("%p\n\n", (void*)pp);
    pp -= 3;
    printf("%p\n\n", (void*)pp);
}
Run Code Online (Sandbox Code Playgroud)

这段代码的输出是这样的:

0x104978036

0x104978037

0x7fff5ec4bbc8

0x7fff5ec4bbd0

0x0

0xffffffffffffffd0
Run Code Online (Sandbox Code Playgroud)

据我所知,前4个输出,带charint指针算法,但我很困惑,为什么它返回0x0struct指针的内存地址?另外,如果我想double y在内存中说地址,我该如何打印?

c memory struct pointers memory-address

0
推荐指数
1
解决办法
107
查看次数

标签 统计

c ×1

memory ×1

memory-address ×1

pointers ×1

struct ×1