指针数组

指针数组

目录

指针数组的定义
指针数组的含义
指针数组的运用
数组指针与指针数组
指针数组与二维数组

编辑本段指针数组的定义

  在 C语言C++语言中, 数组元素全为 指针的数组称为指针数组。
  一维指针数组的定义形式为:“类型名 *数组标识符[数组长度]”。
  例如,一个一维指针数组的定义: int *ptr_array[10]。

编辑本段指针数组的含义

  指针数组中的每一个元素均为指针,即有诸形如“*ptr_array[i]”的指针。
  由于数组名本身也是一个指针,因此指针数组中的元素亦可以表示为“*(*(ptr_array+i))”。又因为“()”的优先级较“*”高,且“*”是右结合的,因此可以写作**(ptr_array+i)。
  由于数组元素均为指针,因此ptr_array[i]是指第i个元素的指针。

编辑本段指针数组的运用

  指针数组可以作为函数的参量使用,使用方式与普通数组类似。
  指针数组常适用于指向若干字符串,这样使字符串处理更加灵活方便。

编辑本段数组指针与指针数组

   数组指针是指向数组首元素的地址的指针,其本质为指针; 指针数组是数组元素为指针的数组,其本质为数组。

编辑本段指针数组与二维数组

  二维数组:如char string_1[10][10]只要定义了一个二维数组,无论赋不赋值,系统都会给他分配相应空间,而且该空间一定是连续的。其每个元素表示一个字符。我们可以通过制定下标对其元素进行修改.
  数组指针:如char *str_B[5] 系统至少会分配5个连续的空间用来存储5个元素,表示str_B是一个5个元素的数组,每个元素是一个指向字符型数据的一个指针。 如果我做这样的定义:
  char a[3][8]={"gain","muck","strong"};
  char *n[3]={"gain","muck","strong"};
  他们在内存的存储方式分别如右图所示,可见,系统给数组a分配了
  3×8的空间,而给n分配的空间则取决于具体字符串的长度。
  此外,系统分配给a的空间是连续的,而给n分配的空间则不一定连续。
  由此可见,相比于比二维字符数组,指针数组有明显的优点,一是指针数组中每个元素所指的字符串不必限制在相同的字符长度,二是访问指针数组中的一个元素是用指针间接进行的,效率比下标方式要高。 但是二维字符数组却可以通过下标很方便的修改某一元素的值,而指针数组却无法这么做
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值