版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 y= + pxy= ( + px) y= px+y= ( px+ ) 留意优先级和结合顺序留意优先级和结合顺序问题:问题:y= px+和和y= ( px)+的含义?的含义?struct student int number; char name4;student *pst;pstpst=pst+1; pxn: pxnsizeof(T)px-py:( (int)px-(int)py) / sizeof(T)px+n, px-n 将指针从当前位置向前或向后挪动将指针从当前位置向前或向后挪动n个数据单位,而不是个数据单位,而不是n个字节。个字节。 这取决于指针所指向的数据类型这取决于指针所指向的数
2、据类型(T)。 px-py求出的是两指针位置之间的数据个数,而不是地址差。求出的是两指针位置之间的数据个数,而不是地址差。 int *p, *q; int i; q=&i; p=q; 不同类型的指针以及指针和普通整数间的关系运算是无意义的。不同类型的指针以及指针和普通整数间的关系运算是无意义的。 字符数组是常量不能赋值。字符数组是常量不能赋值。指针与数组的差别:指针与数组的差别:指针是地址变量,可恣意改动指针是地址变量,可恣意改动它的值;它的值;数组名是地址常量,其值不能数组名是地址常量,其值不能改动。改动。 ex. 1 include main ( ) static char str =st
3、ring; char *ps; ps=str; while ( *ps !=0) cout*ps; ps+; coutendl; ex. 2 void main ( ) int a23, *pa2; pa0=a0; pa1=a1; for ( int i=0; i3; i+ ) *( pa0+i)=i; for ( i=0; i3; i+ ) *( pa1+i)=i; pa 0 pa 1 0 1 2 0 1 2 pa 2 a 2 3 a00 a01 a02 a10 a11 a12 ex. 3 char *string_name ( int n ) char * string = illegal
4、 string, string 1, string 2, string 3 return ( n3 ) ? string0: stringn; static前往的是变量地址,必需保证前往的是变量地址,必需保证函数前往后,这个变量依然存函数前往后,这个变量依然存在。要前往函数中部分变量的在。要前往函数中部分变量的地址,应声明为静态的。地址,应声明为静态的。 要将函数指针指向一详细的函数,用赋值语句:要将函数指针指向一详细的函数,用赋值语句: ex. 5 int f( char ); fp=&f;int i=f (a) ;int i= (*fp) (a); 要保证函数指针的参数和前往值与所指向的函
5、数正好匹配。要保证函数指针的参数和前往值与所指向的函数正好匹配。 ex. 6 void (*fp) ( char * ); void f1(char * s1 ); int f2( char * s2); void f3( int *i1 ); void main( ) fp=&f1; fp=&f2; fp=&f3; (* fp) (asdf); (* fp) (1); int i=(*fp) (qwer); void * 性质:任何类型性质:任何类型的指针都可以赋给它。的指针都可以赋给它。作为参数传入指向任作为参数传入指向任何类型的指针都可与何类型的指针都可与它匹配。它匹配。 两个比较函数:
6、两个比较函数: #include int cmp_int ( void *p, void *q) if ( * (int *) p * (int *) q ) return 1; else if ( * (int *) p = * (int *) q ) return 0; else return 1; int cmp_str ( void *p, void *q ) return strcmp ( * (char *) p, * (char *) q ); 主程序:主程序: #include int main ( ) static int ii = 3,9,5,4; static char
7、* str =compare, the, string ; sort ( ii, 4, sizeof (int), &cmp_int ); sort ( str, 3, sizeof ( char *) , &cmp_str ); coutThe result of sort string:endl; for ( int i=0; i3; i+) coutstr i ; ex. 8 int f (int i); int f (char c); int (*fp1) (int)=&f; int (*fp2) (char)=&f; int (*fp3) (double)=&f; int (*fp4
8、) ()=&f; 指指向向常常量量的的指指针针: const T* p p *p &p 修修改改 修修改改 指指针针常常量量: T * const p p *p &p 修修改改 修修改改 指向常量对象指向常量对象 的指针常量:的指针常量: const T * const p p *p &p 修改修改 修改修改 ex. 9 const int n=1; int *pInt; pInt=&n; *pInt=2; C+函数可重载,在函函数可重载,在函数指针赋值时要留意二数指针赋值时要留意二义性。义性。留意:不能把一个留意:不能把一个const变量的地址变量的地址赋给指向非赋给指向非const的指针,
9、否那么会的指针,否那么会无形中改动常量的值无形中改动常量的值 ; 定定义义了了结结构构的的组组成成,未未分分配配存存储储单单元元 嵌嵌套套不不能能包包含含自自身身 构造的成员可以是变量,数组,也可是指针和函数。构造的成员可以是变量,数组,也可是指针和函数。 运用构造要创建对象:运用构造要创建对象: struct person LiMing; struct person LiMing; struct person struct person * *p=new person;p=new person; 构造嵌套构造的成员是另一构造对象:构造嵌套构造的成员是另一构造对象: struct date s
10、truct person struct date struct person int day; char name20; int day; char name20; char month5; char sex; char month5; char sex; int year; char addr50; int year; char addr50; ; double salary; ; double salary; date birthday; date birthday; ex. 11 struct inode int data; inode *next; ; for( i=0; ins; i
11、+) classi.grade; if(i=cutoff) coutpassn; else coutfailn; void swap(STUDENT &ps1, STUDENT &ps2) STUDENT temp; strcpy(, ); temp.grade=ps1.grade; strcpy(, ); ps1.grade=ps2.grade; strcpy(, ); ps2.grade=temp.grade; 枚举的运用:枚举的运用: ex. 13 vo
12、id f( ) ex. 13 void f( ) color suit=white; color suit=white; int i=red; int i=red; suit=i; / suit=i; /错,错, suit=color(i); / suit=color(i); /正确,把整数赋给正确,把整数赋给枚举类型要强迫类型转换枚举类型要强迫类型转换 i=suit; i=suit; suit=4; / suit=4; /错错 在特定时辰,结合只需一在特定时辰,结合只需一个成员被保管,而不提供个成员被保管,而不提供其它成员的信息。其它成员的信息。 标识符的值也可以本人定义: 例如:enum color red, white=7,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人古籍保护贷款还款协议
- 产业环境写字楼物业管理与思考
- 人力资源合作合同书样本
- 企业信用担保协议书
- 企业生态管理贷款合同模板
- 人力资源合作协议书格式及样板
- 仓库安全管理制度专业化
- 企业收缩管理体系建设
- 举报箱管理紧急预案
- 代理记账委托协议
- 民政局离婚协议书范文模板标准版
- 2024年江苏鑫邮投资发展集团限公司(国企业)公开招聘工作人员高频难、易错点500题模拟试题附带答案详解
- 二次函数专题知识点-常考(典型)题型-重难点题型(含详细答案)
- 彩钢板屋面拆除、更换屋面板施工方案改
- 《红星照耀中国》知识点
- 医师执业、变更执业、多机构备案申请审核表
- 2024新人教版初中七年级英语上册UnitMyschool大单元整体教学设计
- 项目建筑智能化工程施工招标文件模板
- 辅助生殖技术并发症的护理
- 项目经理或管理招聘面试题及回答建议(某大型国企)
- 2023-2024学年北京东城区初二语文(上)期中考试卷附答案解析
评论
0/150
提交评论