下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数组与指针有很密切的联系,常见的结合情况有以下三种:?数组指针?指针数组?二维数组指针2数组指针数组指针:指向数组的指针。女口:int arr = 0,1,2,3,4;int *p = arr;/ 也可写作 int *p=&arr0也就是说,p, arr,&arr0都是指向数组的开头,即第0个元素 的地址。如果一个指针p指向一个数组arr的开头,那么p+i为数组第i 个元素的地址,即&arri,那么*(p+i)为数组第i个元素的值,即 arri 。同理,若指 针p指向数组的第n个元素,那么p+i为第n+1个元素 的地址;不管p指向了数组的第几个元素,p+1总是指向下一个
2、元素, p-1也总是指向上一个元素。下面示例证实了这一点:#i nclude<stdio.h>int main (void)int arr = 0,1,2,3,4;int *p = &arr3;/ 也可以写作 int *p = arr + 3;prin tf("%d, %d, %d, %d, %dn",*(p-3), *(p-2), *(p-1), *(p), *(p+1);return 0;运行结果为:0, 1,2, 3, 43指针数组指针数组:数组中每个元素都是指针。如:int a=1,b=2,c=3;int *arr3 = &a,&
3、b,&c;示例程序:#i nclude <stdio.h>int main (void)int a =1, b =2, c =3;/定义一个指针数组int *arr3 = &a, &b, &c;/也可以不指定长度,直接写作int*parr/定义一个指向指针数组的指针int *parr = arr;prin tf("%d, %d, %dn", *arr0, *arr1, *arr2);prin tf("%d, %d, %dn", *(par 叶0), *(parr+1), *(parir+2);return 0;
4、第一个printf() 语句中,arri表示获取第i个元素的值,该元素是一个指针,还需要在前面增加一个*才能取得它指向的数据, 也即*arri 的形式。第二个 printf() 语句中,parr+i 表示第i 个元素的地址, *(parr+i) 表示获取第i 个元素的值(该元素是一个指针),*(parr+i) 表示获取第i个元素指向的数据。指针数组还可以和字符串数组结合使用,请看下面的例子:#i nclude <stdio.h>int main (void)char *str3="hello C","hello C+","hello
5、 Java"prin tf("%sn%sn%sn", str0, str1, str2);return 0;运行结果为:hello Chello C+hello Java4二维数组指针二维数组指针:指向二维数组的指针。如:int a34 = 0, 1,2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ;int (*p)4 = a;a34 表示一个3行4列的二维数组,其所有元素在内存中是连 续存储的。请看如下程序:#i nclude <stdio.h>intmain (void)int a34 = 0,1,2,3, 4,5,6,7,8,9,1
6、0,11 ;int i,j;for( i =0; i <3; i+ )for( j =0; j <4; j+ )printf("a%d%d=%dn", i, j, &aij);return 0;运行结果为:a00=6422216a01=6422220a02=6422224a03=6422228a10=6422232a11=6422236a12=6422240a13=6422244a20=6422248a21=6422252a22=6422256a23=6422260可见,每个 元素的地址都是相差4个字节,即每个连续在内存中是 连续存储的。按照以上定义可归纳出如下4个结论:(1)p指向数组a的开头,也即第1行;p+1前进一行,指向第2行(2)*(p+1)表示取第2行元素(一整行元素)。(3)*(p+1)+1 表示第2行第2个兀素的地址。(4)*(*(p+1)+1) 表示第2行第2个元 素的值。综上4点,可得出如下结论:a+i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年音响设备销售(需求分析)试题及答案
- 2025年高职人工智能技术(人工智能应用)试题及答案
- 2025年大学大二(可再生能源工程)工程技术综合测试题及答案
- 2025年中职(零售管理实训综合)运营提升实操技能测试试题及答案
- 2025年中职营养与食品卫生学(营养与食品卫生学基础)试题及答案
- 2026年铟矿(显示屏光伏)项目评估报告
- 2025年大学环境设计(室内装饰工程)试题及答案
- 2025年大学大一(生物工程)细胞工程基础阶段测试试题及答案
- 2025年中职(园林植物栽培养护)植物养护阶段测试题及答案
- 2025年高职会计(会计法规实训)试题及答案
- 2023年个税工资表
- 劳动者个人职业健康监护档案
- 2023新青年新机遇新职业发展趋势白皮书-人民数据研究院
- 《两角和与差的正弦、余弦、正切公式》示范公开课教学PPT课件【高中数学人教版】
- 管理学原理教材-大学适用
- 变电站一次侧设备温度在线监测系统设计
- GB/T 6579-2007实验室玻璃仪器热冲击和热冲击强度试验方法
- GB/T 26389-2011衡器产品型号编制方法
- GB/T 16913.3-1997粉尘物性试验方法第3部分:堆积密度的测定自然堆积法
- GB/T 12621-2008管法兰用垫片应力松弛试验方法
- 重庆大学介绍课件
评论
0/150
提交评论