为什么在C中指针如此重要?

Sap*_*ick 2 c file include

我了解指针的前提,但是我觉得它很烦人,我不明白为什么它被认为有用:

#include <stdio.h>
int main () {
   int *ptr, q;
   q = 50;
   ptr = &q;
   printf("%d", *ptr);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么这是一个基本概念?

nob*_*bur 6

首先,传递给函数的参数只能是基元:int,char,long ....或指针。然后,如果您需要传递更复杂的元素(例如数组(字符串)或函数),则必须传递对该元素的引用。

我很快想到的第二件事是:参数总是通过“值”传递。这意味着被调用的函数仅获得变量的副本。因此,修改只会影响副本,原始变量将保持不变。如果通过带有指针的“引用”传递变量,则指针本身是不可变的,但是由于它是对原始var的引用,因此对指针元素的任何修改也会影响调用程序函数中的var。换句话说,如果您想创建一个可以更改变量的函数,则必须向其传递指向该变量的指针才能实现。

  • 如果需要访问固定地址的硬件寄存器,则需要指针 (2认同)
  • 您不能按值传递数组,但绝对可以按值传递“struct”甚至“union”,即使它有一个数组成员。(IOW,您可以通过将数组包装在“struct”中来按值传递数组。) (2认同)
  • 举一个简单的例子,链表是一堆不同的结构,位于内存中的“随机”位置。如果没有指针,就无法确定每个“结构”在内存中的位置。 (2认同)