曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5031|回复: 0
打印 上一主题 下一主题

指针的指针,指针数组

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2009-3-2 13:39:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用一个示例说明指针的指针,指针的数组
01 #include <stdio.h>
02
03 int main()
04 {
05         char *ptrarray[3] = {
06                 "are you ok?",
07                 "how do you do?",
08                 "nice to meet you",
09         };
10
11         char **ptr = ptrarray;
12
13         printf("%s\n", *ptrarray);
14         printf("%s\n", *(ptrarray+1));
15         printf("%s\n", *(ptrarray+2));
16         printf("---------------\n");
17
18         printf("%s\n", *ptr);
19         printf("%s\n", *(ptr+1));
20         printf("%s\n", *(ptr+2));
21         printf("----------------\n");
22
23         printf("%c,%c,%c\n", *ptr[0],*ptr[1],*ptr[2]);
24
25         printf("%c,%c,%c\n", **ptr,**(ptr+1),**(ptr+2));
26
27         printf("%c,%c,%c\n",ptr[0][0],ptr[0][1],ptr[0][2]);
28
29         return 0;
30
31 }
运行输出
[root@localhost C]# ./ptr-array.exe
are you ok?
how do you do?
nice to meet you
---------------
are you ok?
how do you do?
nice to meet you
----------------
a,h,n
a,h,n
a,r,e


程序说明
05)定义一个指针数组(相当于一个二维数组)。

11)ptr为指针的指针;因为指针数组的数组名就是一个指针的指针,所以 ptrarray 赋值给 ptr 正确。

13-15) 因为 ptrarray[] 为一个指针数组,它里面的元素是一个指针,这里为字符串的指针. 而 ptrarray 为指针的地址(即指针的指针),所以 *ptrarray 表示的是字符串的指针,故打印出来的结果就是输出字符串.

12-20) 这里类似, 其实就是把 ptrarray 这个地址赋值到一个指针的指针变量 ptr 中去,就是为了以后方便使用 ptr 这个变量进行数组的操作

23) 分别打印出数组中每一行字符串的头一个字母.*ptr 为第一行字符串的指针,所以 *ptr[0],*ptr[1],*ptr[2] 分别表示地一行,第二行,第三行字符串的指针,也就是这几行字符串的首地址,即也指向了这些字符串的首个元素.

25) 和 23) 一样,只是另外一种表示方法

27) 因为 ptr 和 ptrarray 一样;所以可以把 ptr 看作是这个数组的另外一个数组名,而字符串指针数组可以认为是字符的二维数组.  所以,ptr[0][0],ptr[0][1],ptr[0][2] 就分别表示了地一行字符串中的第一个,第二个,地三个字符.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-13 04:50 , Processed in 0.089085 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表