我是初学者,我在编程中发现了几个术语指针的定义。我想知道哪一个是正确的(也许两者都是)?
a - 指针是一个保存内存地址的变量。根据此定义,在以下代码char *msg;
中,我们可以说变量msg
是指向char
的指针。
b - 指针是内存中数据的地址。根据此定义,函数0x01020304
返回的值malloc
是指针。
答案 0 :(得分:3)
在一行中,我可以说指针是内存地址。变量它包含另一个变量的内存地址。
有关指针的简要信息:
int foo;
int *foo_ptr = &foo;
我尝试将每个变量可视化为一个框。 foo
是一个大小为sizeof(int)
个字节的框。此框的位置是其地址。当您访问该地址时,您实际上访问了它所指向的框的内容。
答案 1 :(得分:1)
地址是一个值。指针是包含地址的对象。 所以在我看来,第一个定义比第二个定义更正确。
如果要遵循C标准(3.术语,定义和符号)
1 object
执行环境中的数据存储区域,的内容 它可以代表值
和(6.2.5类型)
- 指针类型可以从函数类型或对象派生 type,称为引用类型。 指针类型描述对象 其值提供对引用实体的引用 输入即可。有时是从引用的类型T派生的指针类型 称为''指向T的指针''。从一个指针类型的构造 引用类型称为“指针类型派生”。指针类型 是一个完整的对象类型。
答案 2 :(得分:0)
C中的指针是与类型语义关联的地址。不多也不少。指针可以分配给变量,但不一定是。 (可以在表达式中创建指针,就像在写入时一样(1 + 2),没有存储数字3的变量。)