C-指针数组

时间:2020-02-23 14:31:52  来源:igfitidea点击:

在本教程中,我们将学习C编程语言中的指针数组。

创建变量

在本教程中,我们将创建四个整数变量。

//integer variables
int num = 10;
int score = 12;
int run = 123;
int goal = 3;

我们可以在内存中表示如下。

我们假设一个整数值占用2个字节,因此,每个变量在内存中占用2个字节的空间。

这些存储空间填充有整数值,该值未在上图中显示。

指针数组

因为我们有四个整数指针,所以我们可以创建四个独立的整数指针变量,如“ptr1”、“ptr2”、“ptr3”和“ptr4”。

或者,我们可以创建一个指针ptr变量的单个整数数组,该数组将指向四个变量。

在下面的示例中,我们将创建一个大小为4的整数指针ptr数组。

//array of integer pointers
int *ptr[4];

将地址分配给指针数组

此步骤类似于任何其他指针变量。
我们使用"&"运算符的地址获取变量的地址,然后将该地址保存在指针数组中。

在下面的示例中,我们将整数变量num,score,run和goal的地址保存在指针变量ptr的整数数组中。

//assign address of variables to ptr
ptr[0] = #
ptr[1] = &score;
ptr[2] = &run;
ptr[3] = &goal;

假设整数地址值占用2个字节,则每个指针元素的大小为2个字节。
因此,整数指针" ptr"的数组占用的内存空间为8000至8007,即总共8个字节(每个元素2个字节)。

整数指针" ptr"数组的第一个元素保存" num"变量的地址。

同样,整数指针" ptr"数组的第二个元素保存" score"变量的地址。

" ptr"的第三个元素保存"运行"变量的地址,而" ptr"的第四个元素保存"目标"变量的地址。

通过指针数组访问变量的值

要通过指针数组访问变量的值,我们必须在" *"运算符的地址处使用该值。

//print value
printf("num: %d\n", *ptr[0]);
printf("score: %d\n", *ptr[1]);
printf("run: %d\n", *ptr[2]);
printf("goal: %d\n", *ptr[3]);

完整的代码

#include <stdio.h>

int main(void) {
    
  //integer variables
  int num = 10;
  int score = 12;
  int run = 123;
  int goal = 3;
  
  //array of integer pointers
  int *ptr[4];
  
  //assign address of variables to ptr
  ptr[0] = &num;
  ptr[1] = &score;
  ptr[2] = &run;
  ptr[3] = &goal;
  
  //print value
  printf("num: %d\n", *ptr[0]);
  printf("score: %d\n", *ptr[1]);
  printf("run: %d\n", *ptr[2]);
  printf("goal: %d\n", *ptr[3]);
  
  return 0;
}
num: 10
score: 12
run: 123
goal: 3