赞
踩
对于字符串数组该如何操作(⽽且是使⽤指针数组存储)?
使⽤指针的指针实现对字符串数组中字符串的输出。指向指针的指针即是指向指针数据的指针变量。这⾥创建⼀个指针数组 strings,它的每个数组元素相当于⼀个指针变量,都可以指向⼀个整型变量,其值为地址,如图所示。
strings 是⼀个数组,它的每个元素都有相应的地址。数组名 stirngs 代表该指针数组的⾸单元的指针,就是说指针数组⾸单元中存放的也是⼀个指针。strings+i 是 strings[i] 的地址。strings+i 就是指向指针型数据的指针。
指向指针数据的指针变量定义语句形式如下。
char **P;
p 的前⾯有两个 * 号,* 运算符是从右⾄左结合,**p 就相当于*(*p),*p 表示定义⼀个指针变量,在其前⾯再添加⼀个 * 号,表示指针变量 p 是指向⼀个指针变量。*p 就表示 p 所指向的另⼀个指针变量,即⼀个地址。**p是 p 间接指向的对象的值。例如,这⾥ *(p+2) 就表示 strings[2]中的内容,它也是⼀个指针,指向字符串“ World wide ”。因此,输出字符串时,语句为:
printf(("%s\n",*(p+i));
下⾯来看⼀个具体的程序,让⼤家对此有更进⼀步的了解。
- #include <stdio.h>
- int main()
- {
- char *strings[] = {"C language",
- "Basic",
- "World wide",
- "Olyupic",
- "Great Wall"};
- char **p, i;
- p = strings;
- for (i = 0; i < 5; i++)
- {
- printf("%s\n", *(p + i));
- }
- return 0;
- }
指针数组本身存储的就是字符串的⾸地址,再使⽤⼆级指针去进⾏操作,这很难理解, 但是所带来的优越性能却是⽆可⽐拟的,所以⼤家⼀定要尽⼒去理解、掌握这⼀部分内容。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。