在C中声明指针也声明一个具有相同名称的变量

时间:2017-05-10 13:51:43

标签: c pointers syntax

如果我创建一个像:

这样的指针
 int *pointer;

也是在C语言中创建的变量(称为指针)?为什么/为什么不呢?

4 个答案:

答案 0 :(得分:6)

让我们直截了当地说明术语:

  • int *pointer声明变量
  • 变量的名称和类型
  • 变量的名称为pointer
  • 变量的类型是"指向int"
  • 的指针

答案 1 :(得分:1)

不,指针就像一个int:一个数字。它恰好是一个标识内存位置的数字,如果某个内容存储在该内存位置,则可以将其称为地址。像int一样,指针可以存储在变量中。存储指针的变量可以称为指针变量。

答案 2 :(得分:1)

问题:代码可以有一个变量和一个同名的指针吗?

答案是否定的,因为这些名称在同一范围内;;

如果他们各自在不同的功能(或不同的文件)本地,那么他们在不同的范围内'那么,YES就可以有相同的名字。

答案 3 :(得分:0)

您拥有的是类型为pointer的变量名int *,即指向int的指针。这为您提供了存储int的空间。

例如,如果您这样做:

int *pointer;
*pointer = 1;

您将调用undefined behavior,因为您将尝试取消引用未初始化的指针。

然而这是有效的。

int value;
int *pointer;
pointer = &value;
*pointer = 1;

在此示例中,我们将pointer设置为int类型变量的地址。然后,我们可以取消引用该变量来读取/写入它指向的位置。

总而言之,声明指向类型的指针并不会自动为类型本身提供空间。