指针和地址?

时间:2014-07-07 20:09:31

标签: c pointers

我输入了以下内容:

#include <stdio.h>

int main ()
{
    int *ptr, x, y;
    ptr = &x;
    y = x;

    printf("This is the value on location of x: %p\n", *ptr);
    printf("This is the address of x: %p\n", &x);
    printf("The value of x is *ptr is: %i %x\n", *ptr);
    printf("This is the address of ptr: %p\n", &ptr);
    printf("The value of y is: %i\n", y);
    printf("The address of y is %p\n", &y);

    return 0;
}

控制台显示以下内容:

  

这是x:000004F的地址   这是x:0028FF18的地址   x的值是* ptr是:79 28ff94
  这是ptr:0028FF1C的地址   y的值是0028FF14

我可以理解所有printf结果,但第二个值28ff94的第3行除外? 我知道%d79的第一个值%x000004F*ptr = x。 我明确没有指定第二个值,是空的。但现在我想知道十六进制值28ff94来自何处?

1 个答案:

答案 0 :(得分:3)

访问未初始化的变量会导致未定义的行为。可能是程序只是打印了以前在内存中的那个空间中的垃圾值。

由于C语言是一种干净而有效的语言,它不会自动填充值,它只是分配一定量的内存。此部分内存保留其先前的值,直到您将其初始化为其他内容。