当前位置: 首页 > news >正文

C 指针数组

C 指针数组是一个数组,其中的每个元素都是指向某种数据类型的指针。

指针数组存储了一组指针,每个指针可以指向不同的数据对象。

指针数组通常用于处理多个数据对象,例如字符串数组或其他复杂数据结构的数组。

让我们来看一个实例,它用到了一个由 3 个整数组成的数组:

#include <stdio.h>const int MAX = 3;int main ()
{int  var[] = {10, 100, 200};int i;for (i = 0; i < MAX; i++){printf("Value of var[%d] = %d\n", i, var[i] );}return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

Value of var[0] = 10
Value of var[1] = 100
Value of var[2] = 200

可能有一种情况,我们想要让数组存储指向 int 或 char 或其他数据类型的指针。

下面是一个指向整数的指针数组的声明:

int *ptr[MAX];

在这里,把 ptr 声明为一个数组,由 MAX 个整数指针组成。因此,ptr 中的每个元素,都是一个指向 int 值的指针。下面的实例用到了三个整数,它们将存储在一个指针数组中,如下所示:

#include <stdio.h>const int MAX = 3;int main ()
{int  var[] = {10, 100, 200};int i, *ptr[MAX];for ( i = 0; i < MAX; i++){ptr[i] = &var[i]; /* 赋值为整数的地址 */}for ( i = 0; i < MAX; i++){printf("Value of var[%d] = %d\n", i, *ptr[i] );}return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

Value of var[0] = 10
Value of var[1] = 100
Value of var[2] = 200

您也可以用一个指向字符的指针数组来存储一个字符串列表,如下:

#include <stdio.h>const int MAX = 4;int main ()
{const char *names[] = {"Zara Ali","Hina Ali","Nuha Ali","Sara Ali",};int i = 0;for ( i = 0; i < MAX; i++){printf("Value of names[%d] = %s\n", i, names[i] );}return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

Value of names[0] = Zara Ali
Value of names[1] = Hina Ali
Value of names[2] = Nuha Ali
Value of names[3] = Sara Ali

再看一个简单实例,我们首先声明了一个包含三个整数指针的指针数组 ptrArray,然后,我们将这些指针分别指向不同的整数变量 num1、num2 和 num3,最后,我们使用指针数组访问这些整数变量的值。

#include <stdio.h>int main() {int num1 = 10, num2 = 20, num3 = 30;// 声明一个整数指针数组,包含三个指针int *ptrArray[3];// 将指针指向不同的整数变量ptrArray[0] = &num1;ptrArray[1] = &num2;ptrArray[2] = &num3;// 使用指针数组访问这些整数变量的值printf("Value at index 0: %d\n", *ptrArray[0]);printf("Value at index 1: %d\n", *ptrArray[1]);printf("Value at index 2: %d\n", *ptrArray[2]);return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

Value at index 0: 10
Value at index 1: 20
Value at index 2: 30

指针数组在C中非常有用,特别是在处理具有不定数量元素的数据结构时,如动态分配的字符串数组或动态创建的结构体数组。

http://www.lryc.cn/news/326623.html

相关文章:

  • 算法系列--动态规划--背包问题(1)--01背包详解
  • 【KB】通过Karabiner-Elements实现 optionTAB与 commandTAB 对调/映射 win 的 altTAB 习惯
  • nvm node包管理工具
  • 程序员如何兼职赚小钱?
  • 奥比中光深度相机(一):环境配置
  • API网关-Apisix路由配置教程(数据编辑器方式)
  • Transformer的前世今生 day10(Transformer编码器
  • 【c++模板】泛型编程(你真的懂模版特化、分离编译和非类型参数吗)
  • 力扣1----10(更新)
  • [Qt] QString::fromLocal8Bit 的使用误区
  • 什么是RabbitMQ的死信队列
  • 力扣面试150 删除有序数组中的重复项 双指针
  • 政安晨:【深度学习实践】【使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络】(二)—— 深度神经网络
  • 【链表】Leetcode 138. 随机链表的复制【中等】
  • 【计算机网络教程】(第六版)第2章课后习题答案
  • 抖音电商“达人客服”产品上线啦!超多作者邀你一起“321上客服”!
  • 华为防火墙二层墙(VAN/SVI/单臂路由)
  • idea使用git笔记
  • 智慧校园数据可视化有什么好处?怎么推进数字化校园方案?
  • 如何利用python编写函数fn(a,n)求数列和
  • django orm DateTimeField 6位小数精度问题
  • JVM(六)——内存模型与高效并发
  • C++:关键字(4)
  • STM32串口收发单字节数据原理及程序实现
  • openGauss + Datakit搭建openGauss运维平台
  • 【疑惑】-谷歌是如何获取数据的
  • Java static和继承
  • 亲身体验!人工智能对话无障碍 —— BRClient 使用指南
  • 【数据库管理操作】Mysql 创建学生数据库及对数据表进行修改
  • vue2 export default写法,computed、methods的使用