




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Focusky新年课件教学课件
- Excel课件筛选教学课件
- Excel表格操作课件
- Excel知识培训心得体会课件
- 6 我会穿衣服说课稿小学语文一年级下册人教版生活语文(特殊教育)
- 文库发布:etc课件
- 探索心灵之旅-认识心理(说课稿)2025-2026学年初三下学期教育主题班会
- eamma课件教学课件
- DR胸片课件教学课件
- 第2课 姿势与执笔教学设计小学书法西泠版三年级上册-西泠版
- 生产主管转正工作总结
- 2025至2030中国高纯铝行业发展趋势与行业发展研究与产业战略规划分析评估报告
- 西藏介绍课件
- 会务理论考试题及答案
- 2025年期货从业资格之《期货法律法规》真题附答案详解【巩固】
- 幼儿园各项安全管理制度汇编
- 2025年“安全生产年”工作总结(2篇)
- GB/T 2481.1-2025固结磨具用磨料粒度组成的检测和标记第1部分:粗磨粒F4~F220
- 2025-2026秋学生国旗下演讲稿:第4周涵养文明习惯点亮成长底色-养成教育
- 配电电缆故障定位试卷与答案
- 锦囊工程(修订版)
评论
0/150
提交评论