使用C变量进行内存寻址

时间:2014-06-14 20:32:51

标签: c byte memory-address

如果运行,该程序将输出它们之间有20个字节差异的地址。由于long *和long *数据类型只分配8个字节的信息,为什么它们之间没有8个字节的差异?其他12个字节在哪里?

#include <stdio.h>

void functioner(long *y) {
    printf("functioner y address: %p\n", &y);

}

void function(long *x) {
    printf("Function x address: %p\n",&x);
    functioner(x);
}

int main() {
    long p =;
    printf("Address of p: %p\n", &p);
    function(&p);
    return 0;
}

1 个答案:

答案 0 :(得分:0)

一方面是打印指针的地址,而不是指针。

void function(long *x) {
    printf("Function x address: %p\n", &x);
}

试试这个(删除&amp;):

void function(long *x) {
    printf("Function x address: %p\n", x);
}