【发布时间】:2017-05-10 13:51:43
【问题描述】:
如果我创建一个像这样的指针:
int *pointer;
也是用C语言创建的变量(称为指针)?为什么/为什么不?
【问题讨论】:
-
你能解释一下你认为变量是什么吗?它是一个可以以某种方式使用的名称吗?它是存储价值的地方吗?什么样的价值?如所问,您的问题可能无法让您满意。
-
是时候阅读基础知识了......
如果我创建一个像这样的指针:
int *pointer;
也是用C语言创建的变量(称为指针)?为什么/为什么不?
【问题讨论】:
让我们把术语弄清楚:
int *pointer 声明一个变量pointer
int的指针”【讨论】:
不,指针就像一个 int:一个数字。它恰好是一个标识内存位置的数字,如果在该内存位置存储了某些内容,则可以将其称为地址。与 int 一样,指针可以存储在变量中。存储指针的变量可以称为指针变量。
【讨论】:
问题:代码可以有同名的变量和指针吗?
答案是否定的,因为这些名字都在同一个“范围内”;
如果它们各自位于不同函数(或不同文件)的本地,那么它们位于不同的“作用域”中,那么可以使用相同的名称。
【讨论】:
你有一个变量名pointer,它的类型是int *,即一个指向int的指针。这不给你空间来存储int。
例如,如果您这样做:
int *pointer;
*pointer = 1;
您将调用undefined behavior,因为您将尝试取消引用未初始化的指针。
但这是有效的。
int value;
int *pointer;
pointer = &value;
*pointer = 1;
在本例中,我们将pointer 设置为int 类型变量的地址。然后我们可以取消引用该变量以读取/写入它指向的位置。
总而言之,声明指向类型的指针不会自动为类型本身提供空间。
【讨论】:
pointer 是否为变量。