- 1、本文档共62页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机C语言第八章课件
第八章 指 针;8.1 什么是指针;地址:为了访问内存中的某个存储单元,我们
要为它编号,这种编号称为内存地址。
通过地址我们就能够访问该地址所标
识的存储单元。;变量的地址:变量在内存中总占用几个连续的
字节,开始字节的地址,就是变量的地址。;3. 指针及指针变量 ;直接访问与间接访问
直接访问:按变量地址存取变量值
间接访问:通过存放变量地址的变量去访问变量;§8.2 指针变量;§8.2 指针变量;二、指针变量的引用 ;例2:输入a和b两个整数,按先大后小的顺序输出。
main()
{ int a,b,*p1,*p2,*p;
scanf(“%d”,a);
scanf(“%d”,b);
p1=a;
p2=b;
if(ab)
{ p=p1;p1=p2;p2=p; }
printf(“%d,%d\n”,a,b);
printf(“%d,%d\n”,*p1,*p2);}
;三、指针变量作为函数参数 ;例2:编写函数,其功能是对传送过来的两个浮点数求出和值与差值,并通过形参传送回调用函数。(要求不用return语句);例3:编写函数,其功能是将传送过来的小写字母改写为大写字母后传回调用函数(要求不用return语句),其它字符不变。;例4:编写函数,根据传送过来的运算符,对传送过来的两个浮点数进行+、-、*、/运算,把结果传回调用函数(不用return语句)。;§8.3 通过指针引用数组;C规定:;二、数组元素的引用 ;例2:用指针变量指向数组元素利用指针变量效率最高。
main()
{ int a[10]={54,65,8,2,3,56,8,21,57,98},*p,i;
p=a;
for(i=0;i10;i++) printf(%4d,*p++);};(1)指针变量与数组名的区别:
指针变量是地址变量;
数组名是地址常量。
即指针变量的内容可以在程序运行过程中被改变;
数组名一旦被定义,它的值就不能被改变了。 ;例如:通过指针变量输入输出a数组元素。
main()
{ int *p,i,a[10];
p=a;
for(i=0;i10;i++) scanf(%d,p++);
for(printf(“\n”),i=0;i10;i++)
printf(“%6d”,*p++); };三、数组名作函数的参数 ;例:从10个数中找出其中最大值和最小值。 ;例:实参、形参都用指针变量的形式;对于二维数组:
(1)a是数组名,
包含三个元素
a[0],a[1],a[2]
(2)每个元素a[i]
又是一个一维
数组,包含4个
元素;对二维数组 int a[3][4],有
a-----二维数组的首地址,即第0行的首地址
a+i-----第i行的首地址
a[i] ? *(a+i)------第i行第0列的元素地址
a[i]+j ? *(a+i)+j -----第i行第j列的元素地址
*(a[i]+j) ? *(*(a+i)+j) ? a[i][j];int a[3][4];;例题:用指针变量输入输出二维数组中的元素。;指向一维数组的指针变量
定义形式: 数据类型 (*指针名)[一维数组维数];
例 int (*p)[4];;例题 一维数组指针变量举例;§10.4 字符串指针和指向字符串的指针变量 ;C程序访问字符串有以下两种方法: ;说明:;⑷字符数组名是指针常量,只能表示一个确定的字符串,不能改变。字符指针变量的值是可改变的。 ;例题:在一字符串中找出所需字符的位置。;字符串指针作函数参数例题:问题同上例。;10.5 指向函数的指针;10.6 返回指针值的函数;慢灭陕溶问痛磋紊梭攒氰侗鳃壬彻杂靖狗沁哼殴蹄霉趟剑数阀骡薪贯伟判计算机C语言第八章课件计算机C语言第八章课件;§10.7 指针数组和指向指针的指针 ;二、指针数组的应用 ;例如: char *p1; int a=2; void *p2;
p2=a;
p1=(char *)p2;;void sort(char *ps[ ],int n);
#define N 5
main()
{
char *ps[100],i;
for(i=0;iN;i++)
ps[i]=(char*)malloc
文档评论(0)