友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
魔刊电子书 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

C语言设计-第29章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



此外,&a'i'和 a'i'也是等同的。因为在二维数组中不能把&a'i'理解为元素 a'i'的地
址,不存在元素 a'i'。C语言规定,它是一种地址计算方法,表示数组 a 第 i 行首地址。
由此,我们得出:a'i',&a'i',*(a+i)和 a+i 也都是等同的。
另外,a'0'也可以看成是 a'0'+0,是一维数组 a'0'的 0 号元素的首地址,而 a'0'+1
则是 a'0'的 1 号元素首地址,由此可得出 a'i'+j 则是一维数组 a'i'的 j 号元素首地址,它
等于&a'i''j'。

谭浩强      C 语言程序设计               2001 年 5 月 1 日
由 a'i'=*(a+i)得 a'i'+j=*(a+i)+j。由于*(a+i)+j 是二维数组 a 的 i 行 j 列元素的首
地址,所以,该元素的值等于*(*(a+i)+j)。
【例 10。22】
main(){
    int a'3''4'={0;1;2;3;4;5;6;7;8;9;10;11};
    printf(〃%d;〃;a);
    printf(〃%d;〃;*a);
    printf(〃%d;〃;a'0');
    printf(〃%d;〃;&a'0');
    printf(〃%dn〃;&a'0''0');
    printf(〃%d;〃;a+1);
    printf(〃%d;〃;*(a+1));
    printf(〃%d;〃;a'1');
    printf(〃%d;〃;&a'1');
    printf(〃%dn〃;&a'1''0');
    printf(〃%d;〃;a+2);
    printf(〃%d;〃;*(a+2));
    printf(〃%d;〃;a'2');
    printf(〃%d;〃;&a'2');
    printf(〃%dn〃;&a'2''0');
    printf(〃%d;〃;a'1'+1);
    printf(〃%dn〃;*(a+1)+1);
    printf(〃%d;%dn〃;*(a'1'+1);*(*(a+1)+1));


2。 指向多维数组的指针变量
把二维数组 a 分解为一维数组 a'0';a'1';a'2'之后,设 p 为指向二维数组的指针变量。
可定义为:
          int (*p)'4'
它表示 p 是一个指针变量,它指向包含 4 个元素的一维数组。若指向第一个一维数组
a'0',其值等于 a;a'0',或&a'0''0'等。而 p+i 则指向一维数组 a'i'。从前面的分析可得
出*(p+i)+j 是二维数组 i 行 j 列的元素的地址,而*(*(p+i)+j)则是 i 行 j 列元素的值。
二维数组指针变量说明的一般形式为:

谭浩强      C 语言程序设计               2001 年 5 月 1 日
类型说明符  (*指针变量名)'长度'
其中“类型说明符”为所指数组的数据类型。“*”表示其后的变量是指针类型。“长度”表示
二维数组分解为多个一维数组时,一维数组的长度,也就是二维数组的列数。应注意“(*指
针变量名)”两边的括号不可少,如缺少括号则表示是指针数组(本章后面介绍),意义就完
全不同了。
【例 10。23】
main(){
    int a'3''4'={0;1;2;3;4;5;6;7;8;9;10;11};
    int(*p)'4';
    int i;j;
    p=a;
    for(i=0;i
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!