C语言一日一学第10课-指针

上传人:壹****1 文档编号:511927054 上传时间:2023-08-12 格式:DOC 页数:9 大小:300KB
返回 下载 相关 举报
C语言一日一学第10课-指针_第1页
第1页 / 共9页
C语言一日一学第10课-指针_第2页
第2页 / 共9页
C语言一日一学第10课-指针_第3页
第3页 / 共9页
C语言一日一学第10课-指针_第4页
第4页 / 共9页
C语言一日一学第10课-指针_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《C语言一日一学第10课-指针》由会员分享,可在线阅读,更多相关《C语言一日一学第10课-指针(9页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! 课程C语言一日一学第10课指针(2)10.3 数组与指针 一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址。指针变量既然可以指向变量,当然也可以指向数组元素(把某一元素的地址放到一个指针变量中)。所谓数组元素的指针就是数组元素的地址。 10.3.1 指向数组元素的指针 定义一个指向数组元素的指针变量的方法,与以前介绍的指向变量的指针变量相同。例如: Code: ; (定义为包含个整型数据的数组) Code:*; (定义为指向整型变量的指针变量) 应当注意,如果数组为型,则指针变量的基类型亦应为型。 对该

2、指针变量赋值: Code:;把元素的地址赋给指针变量。也就是使指向数组的第号元素,如图: 10.通过指针引用数组元素 引用一个数组元素,可以用: () 下标法,如形式; () 指针法,如*()或*()。其中是数组名,是指向数组元素的指针变量,其初值。 例10.5输出数组中的全部元素 假设有一个数组,整型,有个元素。要输出各元素的值有三种方法: (1)下标法 Code:#include voidmain() int ; int; for(;) scanf(,); printf(); for(;) printf(,); (2) 通过数组名计算数组元素地址,找出元素的值。 Code:#include

3、 voidmain() int ; int ; for(; ) scanf(,); printf(); for(;) printf(,*(); (3) 用指针变量指向数组元素。 Code:#include voidmain() int ; int*,; for(;) scanf(,); printf(); for(;();) printf( ,*); 例10. 通过指针变量输出数组的个元素。 有人编写出以下程序: Code:#include voidmain() int*,; ; for(; ) scanf(,); printf(); for(;, ) printf(,*); 这个程序乍看起来

4、好像没有什么问题。有的人即使已被告知此程序有问题,还是找不出它有什么问题。我们先看一下运行情况: Code:1 2 3 4 5 6 7 8 9 0 22153 234 0 0 30036 25202 11631 8259 8237 28483显然输出的数值并不是数组中各元素的值 解决这个问题的办法,只要在第二个循环之前加一个赋值语句: Code:;Code:#include void main() int*,; ; for(;) scanf(,); printg(); p=a; for(;, ) printf(,*); 10.3用数组名作函数参数 在第8章8.7节中介绍过可以用数组名作函数的参

5、数 如: Code:void main() i(int ,int ); int ; (,); void (int ,int ) Code:f (int arr , int n)但在编译时是将arr按指针变量处理的,相当于将函数f的首部写成 Code:f (int *arr, int n)以上两种写法是等价的。 需要说明的是:C语言调用函数时虚实结合的方法都是采用“值传递”方式,当用变量名作为函数参数时传递的是变量的值,当用数组名作为函数参数时,由于数组名代表的是数组首元素地址,因此传递的值是地址,所以要求形参为指针变量。 例10 将数组中个整数按相反顺序存放 Code:#include voi

6、dmain() voidinv(int ,int ); int ,; printf(The original array:); for(;) printf (,); printf(); inv (,); printf(The array has been in verted:); for(;) printf (,); printf (); voidinv(int ,int )/*形参x是数组名*/ inttemp,(); for(;) ; temp; ; temp; return; 运行情况如下: Code:The original array: , The array has beeninv

7、erted: ,对这个程序可以作一些改动。将函数inv中的形参改成指针变量。 Code:#include voidmain() voidinv(int *,int ); int ,; printf( The original array: ); for(;) printf (,); printf (); inv(,); printf ( The array has been in verted: ); for(;) printf (,); printf (); voidinv(int *,int )/*形参x为指针变量*/ int,temp,*,*,(); ; for(;,) emp*; *;

8、 *temp; return; 归纳起来,如果有一个实参数组,想在函数中改变此数组中的元素的值,实参与形参的对应关系有以下种情况: (1) 形参和实参都用数组名,如: Code:voidmain() void(int ,int ) int ; (,); (2) 实参用数组名,形参用指针变量。如: Code:void ()void (int *,int ) int; (,); (3)实参形参都用指针变量。例如: Code:voidmain()void (int *,int ) int , *p=a; (p,); (4) 实参为指针变量,形参为数组名。如: Code:void main()void (int x ,int ) ,*p=a; (p,); Code:#include voidmain()

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号