考试网 >> IT认证 >> 等级 >> 等级动态 >> C语言笔记 第五章 数组和指针的关系

C语言笔记 第五章 数组和指针的关系

发布时间:2006-07-25 11:56     点击:
分页:[1] 2  下一页

 第五章 数组和指针的关系

如果对声明数组的语句不太明白的话,请参阅我前段时间贴出的文章<<如何

理解c和c++的复杂类型声明>>。

数组的数组名其实可以看作一个指针。看下例:

例八:

int array[10]={0,1,2,3,4,5,6,7,8,9},value;

...

...

value=array[0];//也可写成:value=*array;

value=array[3];//也可写成:value=*(array+3);

value=array[4];//也可写成:value=*(array+4);

上例中,一般而言数组名array代表数组本身,类型是int [10],但如果把a

rray看做指针的话,它指向数组的第0个单元,类型是int *,所指向的类型是数

组单元的类型即int。因此*array等于0就一点也不奇怪了。同理,array+3是一个

指向数组第3个单元的指针,所以*(array+3)等于3。其它依此类推。

例九:

例九:

char *str[3]={

"Hello,this is a sample!",

"Hi,good morning.",

"Hello world"

};

char s[80];

strcpy(s,str[0]);//也可写成strcpy(s,*str);

strcpy(s,str[1]);//也可写成strcpy(s,*(str+1));

strcpy(s,str[2]);//也可写成strcpy(s,*(str+2));

上例中,str是一个三单元的数组,该数组的每个单元都是一个指针,这些指

针各指向一个字符串。把指针数组名str当作一个指针的话,它指向数组的第0号

单元,它的类型是char**,它指向的类型是char *。

*str也是一个指针,它的类型是char*,它所指向的类型是char,它指向的地

址是字符串"Hello,this is a sample!"的第一个字符的地址,即'H'的地址。

str+1也是一个指针,它指向数组的第1号单元,它的类型是char**,它指向

的类型是char *。

*(str+1)也是一个指针,它的类型是char*,它所指向的类型是char,它指向

"Hi,good morning."的第一个字符'H',等等。

下面总结一下数组的数组名的问题。声明了一个数组TYPE array[n],则数组

名称array就有了两重含义:第一,它代表整个数组,它的类型是TYPE [n];第二
分页:[1] 2  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有