- 1、本文档共70页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* .指针变量的使用 .指向一个变量:间接访问该变量 .指针变量与数组关联使用: .指向数组元素 例:int arr[10]; int *ptr; ptr=arr[0];//ptr=arr;数组名是数组首元素的地址 .指向数组 定义方式:类型名 (*指针变量名)[数组长度]; 例:int a[2][4]; int (*pa)[4]; //定义pa为指向一维整型数组的指 //针,该一维数组有4个元素 pa = a; // ? pa = a[0]; pa++; // pa指向a[1],则 pa == a[1] 区别二者的算术运算 使用时必须确保指向一个确定的有意义的空间 * .指针数组: 数组中的每个元素都相当于一个指针变量 定义形式: 类型名 *数组名[数组长度]; 例: int a,b,c; int * parr[3]; parr[0] = a; parr[1] = b; parr[2] = c; .C字符串指针: 可以把字符串当作一个整体进行操作 * .指针变量与函数关联使用 .指针变量作函数参数: 可改变实参指针所指变量的值 void swap(int *px,int *py){ int t; t = *px;*px = *py;*py = t; } 则 int a = 3, b = 5; int *pa = a,*pb = b; swap(pa,pb);//?swap(a,b); 调用后a和b的值各是多少? void swap(int x,int y){ int t; t = x; x = y; y = t; } 则 int a = 3, b = 5; swap(a,b); 调用后a与b的值各为多少? 3 5 a b 3 5 形参变量x 形参变量y 3 5 a b a b pa pb a 形参指针px b 形参指针py * .函数返回指针 例: char *menu[]={error,File,Edit,Search,Help}; char *menuItem(int m) { return (m1 || m4)?menu[0]:menu[m]; } **注意:返回的指针必须是有意义的,不能是一个指向函数内的局部变量或参数变量的指针或处于“悬空”状态的指针 .函数指针 .函数名代表函数的入口地址,也称做函数的指针 .可定义一指针变量,将函数的入口地址存入该指针变量中,通过该指针变量调用函数 .一般做函数的参数 * 二.动态分配内存 .两个运算符:new 与 delete .new用来动态生成一个指定类型的无名变量,并返回该变量的地址,只能通过该地址(指针)访问动态生成的变量 .动态生成变量:int *pi;pi = new int;*pi = 100; .生成变量并初始化:int *pi = new int(5); .动态生成一个数组: int n; … //通过某种运算得到n的值 int *pi = new int[n]; //此时数组长度可以是变量 .delete释放new动态生成的变量 .释放动态生成的变量: delete pi; .释放动态生成的数组: delete []pi; 例:动态内存分配 注意:.new动态生成的变量不会自己撤消,所以该变量不用时,必须及时用delete将其释放 .new与delete比C中的函数malloc和free完善,所以C++中不建议使用malloc和free动态申请与释放内存 * 三.引用 .引用即变量的别名,对引用的操作就是对目标变量的操作 .声明引用的一般形式: 类型名 引用名 = 目标变量名; 例: int nSomeVar; int ref = nSomeVar; .引用不是变量,不占存储空间,故只能声明,没有定义
文档评论(0)