中国高校课件下载中心 》 教学资源 》 大学文库

《C语言》课程教学课件(PPT讲稿)第16讲 数组的指针和字符串的指针

文档信息
资源类别:文库
文档格式:PPT
文档页数:32
文件大小:95KB
团购合买:点击进入团购
内容简介
第16讲数组的指针和字符串的指针 一、数组的指针 1数组与地址 2.数组元素的访问 二、字符串指针 1字符串指针的定义 2.字符指针与字符数组的区别 三、指针作为函数参数 1数组名作为函数参数 2.字符指针作为函数参数
刷新页面文档预览

第16讲数组的指针和字符串的指针 、数组的指针 1数组与地址 2数组元素的访问 、字符串指针 1.字符串指针的定义 2字符指针与字符数组的区别 、指针作为函数参数 1数组名作为函数参数 2字符指针作为函数参数

一、数组的指针 1.数组与地址 2.数组元素的访问 二、字符串指针 1.字符串指针的定义 2.字符指针与字符数组的区别 三、指针作为函数参数 1.数组名作为函数参数 2.字符指针作为函数参数 第16讲 数组的指针和字符串的指针

、数组的指针 >C语言规定: 数组名代表数组(元素)的首地址,即第 一个元素的地址。 若有:inta10, D=8 则:a与&a|0是等价的 指针变量p为数组的指针 数组的指针:数组的起始地址,即数组元素的 首地址。 >数组元素的指针:数组元素的地址

➢C语言规定: 数组名代表数组(元素)的首地址,即第 一个元素的地址。 若有:int a[10], *p=a; 则: a 与 &a[0] 是等价的 指针变量 p 为数组的指针 ➢数组的指针:数组的起始地址,即数组元素的 首地址。 ➢数组元素的指针:数组元素的地址。 一、数组的指针

1数组与地址 对数组的首地址加上偏移量x就可以得到其它 元素的地址。 例:&a[表示数组元素a的地址 等价于a+1、p+1 &ax表示数组元素ax的地址 等价于a+x、p+x

1.数组与地址 ➢对数组的首地址加上偏移量x就可以得到其它 元素的地址。 例: &a[1] 表示数组元素a[1]的地址 等价于 a+1、 p+1 &a[x] 表示数组元素a[x]的地址 等价于 a+x、 p+x

2数组元素的访问 下标法 用ail的形式存取数组元素。 地址法: 用*(a+i)的形式存取数组元素。 >指针法: 用指针变量p指向数组的首地址,然后通 过移动指针存取数组元素。 如p=a,p+i

2.数组元素的访问 ➢下标法: 用 a[i] 的形式存取数组元素。 ➢地址法: 用 *(a+i)的形式存取数组元素。 ➢指针法: 用指针变量p指向数组的首地址,然后通 过移动指针存取数组元素。 如 p=a, p+i

例a用下标法存取数组元素 main( f int a[10l, i; for(i=0;i<10;i++) scanf(%od,&al; for(i=0;i<10;i++) printf(od", aiD printf( in")

例a 用下标法存取数组元素 main( ) { int a[10], i; for ( i=0; i<10; i++ ) scanf("%d", &a[i]); for ( i=0; i<10; i++ ) printf("%d", a[i]); printf("\n"); }

例b用地址法存取数组元素 main() f int a[10l for(i=0;i<10;i++) scanf(%od", a+i); for(i=0;i<10;i++ printf(%d",*(a+D); printf( in");

例b 用地址法存取数组元素 main( ) { int a[10], i; for ( i=0; i<10; i++ ) scanf("%d", a+i ); for ( i=0; i<10; i++ ) printf("%d", *(a+i)); printf("\n"); }

数组元素的访问举例 例c用指针法存取数组元素。(即通过指针指 向数组的首地址,然后通过移动指针存取数组 元素。) main( maino fint a[10,"p, i; f int a[10, "p for(i=0,p=a;i<10;i++) for(p=a; p<a+10; p++) scanf(%od",p+i); scanf(%d",p); for(i=0,p=a;i<10;i++) for(p=a; p<a+10; p++) printf("%od", (p+i)) printf("%d",* p); printf("n; printf( n);

数组元素的访问举例 例c 用指针法存取数组元素。(即通过指针指 向数组的首地址,然后通过移动指针存取数组 元素。) main( ) { int a[10], *p, i; for (i=0, p=a; i<10; i++) scanf("%d", p+i); for (i=0, p=a; i<10; i++) printf("%d", *(p+i)); printf("\n"); } main( ) { int a[10], *p; for ( p=a; p<a+10; p++) scanf("%d", p); for ( p=a; p<a+10; p++) printf("%d", *p); printf("\n"); }

例c说明 2000 2001 p=& a 2002 2 等价于p 2003 p+十 2004 p++ 4 2005 2006 6 2007 2008 8 2009

例c 说明 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 02468 p = & a *p++ 0462 * p p++ 等价于 8

数组元素的访问小结: int i, a 10 *D=a9 表现形式 义 &aro] a p 维数组首地址 &ai]a+ip+i一维数组下标为的元素地址 a[o] p|一维数组下标为0的元素的值 a[i]*(a+i)*(P+)一维数组下标为i的元素的值

数组元素的访问小结: int i,a[10],*p=a; 表 现 形 式 含 义 &a[0] a p 一维数组首地址 &a[ i ] a+i p+i 一维数组下标为i 的元素地址 a[0] *a *p 一维数组下标为0 的元素的值 a[ i ] *(a+i) *(p+i) 一维数组下标为i 的元素的值

注意: 数组名是一个常量,不允许重新赋值。 指针变量是一个变量,可以重新赋值。 >p+i和a均表示数组元素a的地址,均指向 ali (p+i和*(a+均表示p+和a+i所指对象的内容, 即a团i] >p++:等价于*p++)。其作用:先得到,再 使p=p+1

注意: ➢ 数组名是一个常量,不允许重新赋值。 指针变量是一个变量,可以重新赋值。 ➢ p+i和a+i均表示数组元素a[i]的地址,均指向 a[i]。 *(p+i)和*(a+i)均表示p+i和a+i所指对象的内容, 即a[i]。 ➢ *p++:等价于*(p++)。其作用:先得到*p,再 使p=p+1

刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档