术语:什么是指针?

时间:2017-04-25 15:39:59

标签: c pointers

我是初学者,我在编程中发现了几个术语指针的定义。我想知道哪一个是正确的(也许两者都是)?

a - 指针是一个保存内存地址的变量。根据此定义,在以下代码char *msg;中,我们可以说变量msg是指向char的指针。

b - 指针是内存中数据的地址。根据此定义,函数0x01020304返回的值malloc是指针。

3 个答案:

答案 0 :(得分:3)

在一行中,我可以说指针是内存地址。变量它包含另一个变量的内存地址。

  • 一元或一元的算子&给出变量的地址。
  • 间接或取消引用运算符*给出了指针所指向的对象的内容。

有关指针的简要信息:

int foo;
int *foo_ptr = &foo;
  • 第1行:此变量占用一些内存。在目前的主流英特尔处理器上,它占用了一些(例如:4字节的内存(因为int是4字节宽)。

  • 第2行:foo_ptr被声明为指向int的指针。我们已将其初始化为指向foo。

    enter image description here

我尝试将每个变量可视化为一个框。 foo是一个大小为sizeof(int)个字节的框。此框的位置是其地址。当您访问该地址时,您实际上访问了它所指向的框的内容。

答案 1 :(得分:1)

地址是一个值。指针是包含地址的对象。 所以在我看来,第一个定义比第二个定义更正确。

如果要遵循C标准(3.术语,定义和符号)

1 object

  

执行环境中的数据存储区域,的内容   它可以代表值

和(6.2.5类型)

  

- 指针类型可以从函数类型或对象派生   type,称为引用类型。 指针类型描述对象   其值提供对引用实体的引用   输入即可。有时是从引用的类型T派生的指针类型   称为''指向T的指针''。从一个指针类型的构造   引用类型称为“指针类型派生”。指针类型   是一个完整的对象类型。

答案 2 :(得分:0)

C中的指针是与类型语义关联的地址。不多也不少。指针可以分配给变量,但不一定是。 (可以在表达式中创建指针,就像在写入时一样(1 + 2),没有存储数字3的变量。)