C语言关于数组与指针的总结_第1页
C语言关于数组与指针的总结_第2页
C语言关于数组与指针的总结_第3页
C语言关于数组与指针的总结_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论