学习C - 指针和内存寻址

Ale*_*and 2 c pointers

我正在学习C编程,我有一个关于指针的简单问题......

我使用以下代码来玩指针:

#include <stdio.h>

int main (int argc, const char * argv[]) {

int * c;

printf("%x\n",c);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我打印C的值时,我返回0.但是,当我打印&c(即printf("&x \n",&c)时,我在内存中得到一个地址...

打印指针时,我不应该在内存中获取地址(即printf("%x \n",c)?

--- 编辑 ---

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

int main (int argc, const char * argv[]) {

    char * a = malloc(11);
    printf("String please\n");
    scanf("%s",a);
    printf("%s",a);

}
Run Code Online (Sandbox Code Playgroud)

问题是,为什么printf("%s",a)返回字符串而不是存储在?中的地址?

我不应该使用*a跟随指针然后打印字符串?

And*_*rey 11

您当前的程序不正确.您在第一次使用之前定义变量并且不设置值.不保证初始值c,但你很幸运,它等于0.这意味着c无处可指.当你打印&c变量c本身的打印地址.实际上两个版本都打印地址.