- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
指针是C语言中的一个概念,正确而灵活地运用指针,可以有
本章内容包括: 10.1 地址和指针的概念 10.2 变量的指针和指向变量的指针变量 10.3 数组与指针10.4 字符串与指针 10.5 指向函数的指针 10.6 返回指针值的函数10.7 指针数组与指向指针的指针 10.1地址和指针的概念 一、指针概述: 1、地址的概念与取地址运算: 内存以字节编码,每个编码都是一个地址。我们原先学过的变量、数组、函数等都放在内存中,在程序中,我们是通过变量名等使用变量、给变量赋值等,但实际运行时,系统使用的是内存地址,而不是变量名。我们怎样知道机器将某种数据放在内存的什么地方呢?可用求地址运算符 如:int a = 3 ; a 就是变量在内存中的地址。 可以用printf(“%x \n” , a); 看出其地址。注意,这个地址并不是始终不变的,这是由机器和操作系统来安排的,我们无法预先知道。 在数组中,数组名代表数组的首地址 故a表示的地址和a [0]的地址相同。 但不能施加在常数、常量或表达式上,也不能施加在寄存器变量上(因为寄存器变量在cpu中,不在内存中)。 二、指针变量: 既然存储在内存中的各种变量都有一个地址,我们能否这样设想:定义某种变量,让这个变量的值等于某个变量的地址,如同某个房间号、门牌号一样?回答是肯定的。我们把这种存放某种变量地址的变量称为指针变量。 说明(系统对变量的访问形式分为两种) 一个变量的访问(访问是指取出其值或向它赋值)方式有两种: (1)直接访问,通过变量名访问,如通过变量名i直接访问。 (2)间接访问,通过该变量的指针来访问,如通过指针p访问变量i。 10.3.4 多维数组与指针 1. 多维数组元素的地址 假设有如下数组定义语句: int a [3][4]; (1)从2维数组角度看,数组名a代表数组的起始地址, 是一个以行为单位进行控制的行指针: a+i:行指针值,指向2维数组的第i行。 *(a+i):(列)指针值(a[i][0]),指向第i行第0列(控制由行转为列,但仍为指针)。 *(*(a+i)):数组元素a [i][0]的值。 用a作指针访问数组元素a [i][j]的格式: *(*(a+i)+j) (2)从1维数组角度看,数组名a和第1维下标的每一个值, 共同构成一组新的1维数组名a [0]、a [1]、a [2],它们均由4个元素组成。 C语言规定:数组名代表数组的地址,所以a [i]是第i行1维数组的地址, 它指向该行的第0列元素,是一个以数组元素为单位进行控制的列指针: a[i]+j:(列)指针值,指向数组元素a [i][j]。 *(a[i]+j):数组元素a [i][j]的值。 如果有“int a[3][4],*p=a [0];”,则p+1指向下一个元素, 用p作指针访问数组元素a [i][j]的格式: *(p+(i*每行列数+j) ) 2,指向多维数组元素的指针变量 (1)指向数组元素的指针变量 例10.11 用指针变量输出数组元素的值 #includestdio.h void main() {int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p; for(p=a[0];pa[0]+12;p++) {if((p-a[0])%4==0)printf(\n); printf(%4d,*p); } } 例10.12输出二维数组的任一行任一列的值 #includestdio.h void main() {int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int (*p)[4],i,j;//定义一个指向含有4个元素的整型数组 p=a; scanf(i=%d,j=%d,i,j); printf(a[%d,%d]=%d\n,i,j,*(*(p+i)+j)); } 3.指向数组的指针作为函数参数 例10.13 有一个班,3个学生,各学4门课程,计算总1平均分数及输出第n个学生的成绩。 算法设计: 主函数:1,函数声明 2,初始化成绩 3,调用求平均成绩的函数 4,调用函数输出第i个学生的成绩 求平均值函数: 1,求总成绩 2,返回平均成绩 输出函数 使用for循环,直接输出成绩 #includestdio.h void main( ){ void average(float *p,int n); void search(float (*p)[4], int n); float
您可能关注的文档
- 【原创】生活依然奔跑在路上——Tow的求职之旅(前注及文序).doc
- 世界旅游日(WorldTourismDay),是由世界旅游组织确定的旅游.ppt
- 中国知网——CNKI数据库检索使用培训.ppt
- 中正大学申请TANet新世代骨干网路连线报告.ppt
- 今天有一位客人的L1300机器,开机直接报错双灯交替闪,驱.doc
- 以下为WORD上机操作题,红色文字为操作要求,请把黑色部分文字或表格.doc
- 分布式数据库-专题2-PPT-厦门大学计算机科学系.ppt
- 初探迷社群内阶级与权力差异—以台湾杰尼斯迷为例A.ppt
- 北大PE20班(广州班)班会.ppt
- 单片机C语言期末考试题(A).doc
- 政府的减贫计划如何使资源有效向穷人传递Howshould.ppt
- 校园网办公区用户如何设置IP地址(win2000xp).doc
- 生产管理和质量管理自查情况汇报-制药企业GMP自检培训-----.ppt
- 第1章Delphi的编程语言——ObjectPascal.ppt
- 测定BaCl2·2H2O中钡的含量.ppt
- 第5章共享与交流——FTP及其它主要内容5.1文件传输(.ppt
- 第二部分海外ETF的市场和产品状况2.doc
- 第八章浪漫与杀手﹝婚前性行为,堕胎﹞I.婚前性行为「.ppt
- 组员2F19邝树汉2F29谭伟杰2F35黄桂芝2F10陈冠翘.ppt
- 组员蔡蓓宜498D0009锺佩諠498D0037吴昭贤498D0035.ppt
最近下载
- 湖北省武汉市十一初级中学2024-2025学年七年级上学期10月月考英语试卷(含答案,无听力音频听力原文).pdf VIP
- T_ZJATA 0033-2025 塑胶玩具中双酚类和烷基酚类物质迁移量的测定 液相色谱-串联质谱法.docx VIP
- 《“探界者”钟扬》精品教案精品教案.doc VIP
- 知识点汇总_古代汉语.pdf VIP
- 活动执行质量保障措施方案.pdf VIP
- 2024年新课标人教版小学体育水平三全册教案.docx
- 2025年注册安全工程师《法律法规》30个必考点终极预测与高仿真模拟题库.pdf
- 2024-2025学年初中数学六年级上册(2024)鲁教版(五四学制)(2024)教学设计合集.docx
- T_ZJATA 0033-2025 塑胶玩具中双酚类和烷基酚类物质迁移量的测定 液相色谱-串联质谱法.pdf VIP
- T_ZBXH 141-2025 甜菜旋幽夜蛾防控技术规程.pdf VIP
文档评论(0)