我正在探索指针,特别是当前正在搞乱结构指针.目前,我有这个代码:
#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个输出,带char和int指针算法,但我很困惑,为什么它返回0x0的struct指针的内存地址?另外,如果我想double y在内存中说地址,我该如何打印?