




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
指针(pointer)C/C+的精髓!你不得不学好它! 指针(pointer)指针是一种数据类型,用于存放某个变量的地址值。此时该指针被称为是指向该变量。一个指针的类型决定于它所指向的变量的类型。指针既可指向基本数据类型(即预定义数据类型),又可指向数组、函数、类和文件等用户自定义数据类型。指针可以初始化为0、NULL(即0,这是标准库头文件中定义的符号化常量)或一个地址。内容为0或NULL的指针不指向任何变量,称为空指针。例如:int a;int *ptr;指针ptr在下式中被初始化为指向变量a。ptr = &a;两条语句也可组合地表示为:a = *ptr;其中&为存地址运算符,而*则为取内容运算符。ptr a int a, *ptr;ptr = &a;指针与数组数组名是一个指向该数组的常量指针(其值不能改变),也是该数组中首单元的地址值。一维数组的指针如下:int arr5 = 1, 3, 5, 7, 9 ;int *ptra;ptra = arr;ptra arr0=1 arr1=3 arr2=5 arr3=7 arr4=9 数组指针与数组名两者的异同:(1)整型变量指针ptr与整型数组指针ptra的说明格式相同,其间空格可放可不放。(2)arr既是数组名,又是数组地址,还是数组指针(称为常量指针),三位一体。因此arr可在一定范围内与ptra等效地使用。 可在一定范围内与 * 等效地使用。但arr不准重新赋值。例如:arr0即*arr即*ptra即ptra0 = 1arr3即*(arr+3)即*(ptra+3)即ptra3 = 7但arr的使用不如ptra灵活,如:不允许*arr+,而允许*ptra+。见以下例子:2.2中例1的主程序void main() int arr5 = 1, 3, 5, 7, 9; for ( int i = 0; i 5; i+) cout arri endl; /数组名其中的for语句可改为: for ( int i = 0; i 5; i+) cout *(arr+i) endl; /指针 / 但不允许arr加减,即不允许: / cout *(arr+) endl; not allowed但可使用以下指针ptra: int *ptra = arr; for ( int i = 0; i 5; i+) cout *(ptra+) endl; / 此处可以将指针加减(3)字符串与字符数组:字符串一般使用指针(包括变量指针和常量指针两种方式)表示其地址和内容,此地址也即其第一个字符的地址。第一种变量指针方式例如:char *ch_ptr = home; (ch_ptr为变量指针)。第二种常量指针方式例如:int arr5 = 1, 3, 5, 7, 9; (arr为常量指针)。此处字符数组名是一个指向该数组的常量指针,它不能重新赋值。例两种指针方式及其地址和字符串内容/ str_ptr_&_array_1.cpp#include #include void main() char *nm = Nice; char name = OK; coutAddresses of the pointers nm and name themselves:endl; coutnm is at &nm, name is at &nameendl; couthexsetiosflags(ios:uppercase)nm points to 0x(int)nm; cout, name points to 0x(int)nameendl; coutCharacter strings are nm and ; coutname respectively.endl;/* Results:Addresses of the pointers nm and name themselves:nm is at 0x0065FDF4(栈区), name is at 0x0065FDF0(栈区)nm points to 0x42608C(数据区), name points to 0x65FDF0(栈区)Character strings are Nice and OK respectively.*/说明:我在编程时的数据与此相差很大,读者需要自行地将上述代码运行一下.程序中cout(int)name用于读取指针内容即指针所指向的地址(字符串地址);而coutname则用于读取该指针所指向的字符串内容。指向指针的指针例如:int i=5;int *ptr = &i;int *pp = &ptr;即:指向指针ptr的指针 整型变量i的指针 整型变量pp ptr = &i i = 5 可表示为:i = *ptr;或i = *pp;指针数组(array of pointers)在实际应用中,常常使用一维一级字符指针数组来存放一些字符串,以便于操作。例使用一维一级字符指针数组来存放一星期中的各天。/ arr_ptr1.cpp/ Show the function of a character array#include char *name = ,Monday,Tuesday,Wednesday,Thursday, Friday, Saturday, Sunday; / 第一单元空着,因数组从零开始,/ 而生活中又没有星期零void main() int week; while (1) coutweek; if ( week7 ) break; coutThis is nameweekendl; coutProgram ended!endl;/* Results:Input sequent
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-湖南-湖南房管员二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖南-湖南动物检疫员二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北经济岗位工三级(高级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北机械热加工二级(技师)历年参考题库含答案解析
- 创业孵化基地建设资金申请报告:2025年创业环境优化策略
- 2025年事业单位工勤技能-海南-海南医技工五级(初级工)历年参考题库含答案解析
- 保险行业数字化理赔服务与保险欺诈防范研究报告
- 2025年K2教育STEM课程实施效果评估:学生问题解决能力提升策略研究报告
- 2025年休闲农业与乡村旅游乡村旅游产业投资机会分析报告
- 2025年虚拟现实教育产品在虚拟现实心理健康教育中的应用设计与效果评估报告
- 2025高级会计师考试试题及答案
- 2025-2030中国特高压电网建设规划与设备需求分析报告
- 2026版赢在微点顶层设计大一轮物理-专题提升二十 测量电阻的其他几种方法
- 民族文化宫2025年公开招聘17人笔试模拟试题含答案详解
- 光传输业务配置课件
- 2025年幼儿园教师专业考试试题及答案书
- 机关事业单位工人汽车驾驶员高级、技师国家题库练习题及答案
- 2025年辽宁省地质勘探矿业集团有限责任公司校园招聘笔试备考题库带答案详解
- 2025年青海辅警招聘考试题及答案
- 2025新外研版初中英语八年级上全册课文原文翻译
- 2025年高处作业特种作业操作证考试试卷:高处作业特种作业操作证考试备考攻略与技巧
评论
0/150
提交评论