C Language指针


介绍

指针是一种变量,可以存储另一个对象或函数的地址。

句法

  • <数据类型> * <变量名称>;
  • int * ptrToInt;
  • void * ptrToVoid; / * C89 + * /
  • struct someStruct * ptrToStruct;
  • int ** ptrToPtrToInt;
  • int arr [length]; int * ptrToFirstElem = arr; / *对于<C99'length'需要是编译时常量,对于> = C11,它可能需要为1。 * /
  • int * arrayOfPtrsToInt [length]; / *对于<C99'length'需要是编译时常量,对于> = C11,它可能需要为1。 * /

备注

星号的位置不影响定义的含义:

/* The * operator binds to right and therefore these are all equivalent. */
int *i;
int * i;
int* i;

但是,在一次定义多个指针时,每个指针都需要自己的星号:

int *i, *j; /* i and j are both pointers */
int* i, j;  /* i is a pointer, but j is an int not a pointer variable */

指针数组也是可能的,其中在数组变量的名称之前给出星号:

int *foo[2]; /* foo is a array of pointers, can be accessed as *foo[0] and *foo[1] */

指针 相关例子