【发布时间】:2017-01-31 19:14:56
【问题描述】:
我的理解是,当你声明一个指针时,比如int *a = 5,a 是指针,*a 是指向的 int - 所以* 表示你正在访问指针数据。 (而& 正在访问该地址)。希望这是正确的吗?
为什么当我在做printf 时它似乎没有按我想要的方式工作?
int main()
{
int *a = 5;
printf("%d\n",a);
return 0;
}
这给了我正确的结果,这是我没想到的。当我在 printf 中执行 *a 而不是 a 时,它失败了,我对此感到困惑?
【问题讨论】:
-
这被称为 undefined 行为是有原因的。
printf手册页如何打印指针你不明白吗?并回顾一下指针和初始化器。 -
“正确的结果,没想到”到底是什么意思?
-
您是否对指向地址为 5 的
int 5或a的a感兴趣? -
这样做的目的是我对指针感到困惑,我只是在学习。但是从答案+一些阅读中,我想我得到了语法和它现在的含义。
-
我以为
int *a = 5给*a的值是5,但这不是声明的工作方式,而且我需要先初始化ptr,这是我的错误。
标签: c pointers initialization printf