




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章指针 C语言大学实用教程 内容提要 指针的概念数组的下标法引用和指针法引用利用指针数组对各个字符串进行排序 存取等操作带参数的main 函数 指针概述 指针的概念一 什么是变量的地址 什么是变量的内容 每个变量在内存中都占有一定字节数目的存储单元 C编译程序在对程序编译时 根据程序中定义的变量的类型 在内存中为其分配相应字节数目的存储空间 变量在内存中所占存储空间的首地址 就称为该变量的地址 address 变量在内存中所占存储单元中存放的数据 就称为变量的内容 content 直接寻址间接寻址指针变量专门存放地址型数据的变量运算符 和 的使用 p1 该表达式的值代表的是变量a的地址 a 该表达式引用的是变量a的内容 引入指针的原因为函数提供修改变量值的手段指针为C的动态内存分配系统提供支持指针为动态数据结构提供支持指针可以改善某些子程序的效率例 任意从键盘输入两个整数 然后将交换后的数据重新输出 includevoidswap intx inty main inta b printf Pleaseentera b scanf d d 仔细分析 是否成功交换 变量的指针作为函数参数 变量指针指针变量变量的指针就是变量的地址 指针变量就是C语言中专门用于存放地址型数据的变量指针变量的定义类型关键字 指针变量名 例 1 int p1 p2 2 inta b int p1 指针变量的运算1 指针变量的内容只能是地址 而不能是数据 必须用相同基类型的变量的地址对其进行赋值 2 指针变量必须经初始化后才能使用 否则指针变量所指向的存储单元是不确定的 对其所作的赋值等操作将是很危险的 3 由于指针的值就是地址 指针运算实质上就是对地址的运算 指针运算只能参与赋值运算 算术运算和关系运算 其中 指针可参与的算术运算值有两种 加和减 即加 减一个整数或自增 自减运算 分析 a p a p p p 1 a p a p p p 1 重新解决问题 includevoidswap int x int y main inta b printf Pleaseentera b scanf d d 字符指针作函数参数 字符数组与字符指针的不同1 定义方法不同 charstr 10 定义的是一个字符数组 而char ptr 定义的是一个字符指针 2 初始化含义不同 charstr 10 China char ptr China 3 赋值方法和含义不同 指针变量可以用如下方式赋值 char ptr ptr China 正确 charstr 10 str China 错误 strcpy str China 4 输入字符串时略有不同 用scanf语句输入字符串到数组中 用charstr 10 scanf s str 而用字符指针输入字符串时 必须确保字符指针事先已指向了一个数组的首地址 即charstr 10 ptr ptr str scanf s ptr 正确 而char ptr scanf s ptr 错误 5 字符数组的数组名是一个地址常量 它的值是不能改变的 而字符指针是一个变量 它的值是可以改变的 for ptr str ptr 0 ptr printf c ptr 指针和数组间的关系 一维数组的地址和指针数组的指针 指数组的起始地址 指向数组的指针变量 inta 9 intp p 可有五种引用数组元素的方法 二维数组的地址和指针行地址和列地址1 a i j 2 a i j 3 a i j 4 a i j 行指针和列指针定义行指针 类型 行指针名 常量n 定义列指针 int p 例题 指针数组 指针数组 类型名 数组名 数组长度 如 int p 4 例题 编程将若干字符串按字母顺序由小到大排序后输出 include includemain inti j char temp charptr 5 Pascal Basic Fortran Java VisualC printf Beforesorted n for i 0 i 5 i puts ptr i 输出排序前的5个字符串 for i 0 i 4 i 交换法排序 for j i 1 j 5 j if strcmp ptr j ptr i 0 若字符串小于ptr i 所指字符串 temp ptr i 则交换指针变量ptr j 和ptr i 的指向 ptr i ptr j ptr j temp printf Aftersorted n for i 0 i 5 i puts ptr i 输出排序后的5个字符串 带参数的main函数和命令行参数 main intargc char argv 形参argc表示命令行中参数的个数形参argv被说明为指针数组 用于指向命令行中的多个命令行参数 字符串 下面的程序用于演示命令行参数与main函数各形参之间的关系 main argc argv intargc char argv inti printf Thenumberofcommandlineargumentsis d n argc printf Theprogramnameis s n argv 0 if argc 1 printf Theotherargumentsisfollowing n for i 1 i argc i printf s n argv i 运行程序 假定上面程序的文件名是echo c 则在程序成功编译和连接后 编译连接后的程序名为echo exe 我们可按如下命令行方式运行这个程序 echoprogramming
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年专业赛车队车辆租赁及赛事赞助合作协议范本
- 2025年度儿童剧剧本研发与儿童剧院合作演出协议
- 2025年农村宅基地流转及抵押贷款服务合同
- 2025年度环保设施建设合作协议:实现绿色生产与可持续发展
- 2025苏州市房屋买卖合同
- 2025年度中式快餐连锁店员工职业素养培训服务合同
- 2025年绿色生态住宅项目个人房产抵押贷款服务合同
- 2025年企业宣传片全案策划与制作专业服务合同
- 2025年集成电路芯片产业链上下游市场调研与风险评估合同
- 2025年度新型车库租赁协议保证金及条款细则
- 《建筑施工安全检查标准》JGJ59-20248
- 宣讲《铸牢中华民族共同体意识》全文课件
- 水利水电工程单元工程施工质量验收表、安装埋设考证表样、施工期观测精度和限差
- 国际音标卡片(打印版)
- 翁建平MODY识别与诊疗培训课件
- 高中物理校本课程生活中的趣味物理校本课程实施方案
- 防火防烟分区检查
- 《小学开学第一课:学生守则、行为规范、班级班规》课件
- 农产品营销的渠道策略讲义
- 工程总承包(EPC)模式市场应用现状
- 幼儿园行政工作保密协议
评论
0/150
提交评论