我正在学习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本身的打印地址.实际上两个版本都打印地址.