c - 术语 : what's a pointer?

标签 c pointers

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

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

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

最佳答案

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

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

关于指针的简要信息:

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

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

    enter image description here

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

关于c - 术语 : what's a pointer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43615221/

相关文章:

c - 带有 Json-C 的架构 x86_64 的 undefined symbol

C Primer 加上第 6 章练习 3

将指向内存缓冲区的指针转换为指向 VLA 的指针

c++ - 定义指针变量

c - 调用函数时 char array[100] 和 char *array 之间的区别?

c - 在 Linux 中使用 c 实现管道

c - gdb "watch"无法通过 glibc(read) 函数修改变量?

c - 我应该用什么代替 strcasecmp?

C++ 指南 : Understanding How Pointers Work

c - 返回字符指针并与字符串进行比较