指针和引用 1.ppt

  1. 1、本文档共86页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
指针和引用 1

重点内容 指针的概念 指针的引用和运算 使用指针为参数的函数调用 字符串 动态分配内存 引用的概念 引用 与指针的区别 指针:另一个变量的地址,用于间接访问内存单元.(指针就是地址 ) 指针变量初始化 例: int *pa=a; 注意事项 用变量地址作为初值时,该变量必须在指针初始化之前已说明过,且变量类型应与指针类型一致。 可以用一个已赋初值的指针去初始化另一 个指针变量。 不要用一个内部 auto 变量去初始化 static 指针。 指针变量赋值运算:注意 一个指针变量只能指向同一类型的变量。即整型指针变量只能放整型数据的地址,而不能放其它类型数据的地址。 指针的类型是它所指向变量的类型,而不是指针本身数据值的类型,任何一个指针本身的数据值都是unsigned long int型。 允许声明指向 void 类型的指针。该指针可以被赋予任何类型对象的地址。 指针变量只能存放地址,不要将非地址数据赋给指针变量。但可以赋值为整数0,表示为空指针 int *p, i; p=100; * 在定义语句中只表示变量的类型是指针,没有任何计算意义。 * 在语句中表示“指向”。表示“地址”。 void类型指针的使用 void vobject; //错,不能声明void类型的变量 void *pv; //对,可以声明void类型的指针 int *pint; int i; void main( ) //void类型的函数没有返回值 { pv = i; //void类型指针指向整型变量 // void指针赋值给int指针需要类型强制转换: pint = (int *)pv; } 指针变量的算术运算 指针与整数的加减运算 指针 p 加上或减去 n ,其意义是指针当前指向位置的前方或后方第 n 个数据的地址。 这种运算的结果值取决于指针指向的数据类型。 指针加一,减一运算 指向下一个或前一个数据。 例如:y=*p++ 相当于 y=*(p++) (*和++优先级相同,自右向左运算) 指针变量的关系运算 关系运算 指向相同类型数据的指针之间可以进行各种关系运算。 指向不同数据类型的指针,以及指针与一般整数变量之间的关系运算是无意义的。 指针可以和零之间进行等于或不等于的关系运算。例如:p==0或p!=0 指向常量的指针 不能通过指针来改变所指对象的值,但指针本身可以改变,可以指向另外的对象。 例1 const int n1=5; const int n2=6; int n3=18; const int *p=n1; *p=7 ; 错误 不能修改指针指向的常量 p=n2; 正确 指针可以修改 *p=8;错误 不能修改指针指向的常量 p=n3; *p=19;错误 不能修改指针指向的常量 n3=19;正确 指向常量的指针定义 const int *p=a;告诉编译,*p是常量,不能将*p作为左值进行操作。 定义指向常量的指针只限制了指针间接访问操作,不能规定指针指向的值本身的操作规定性。 指针常量 若声明指针常量,则指针本身的值不能改变 例1 const int n1=5; int n2=3 int * const p=n2; p=n1; 错误 *p=4 正确 定义 int * const p=a;告诉编译,p 是常量,不能作为左值进行操作。但是允许修改间接访问值,即*p可以修改。 void main() {char buffer[10]=“ABC”; 数组初始化 char *p; p=“hello”; 将字符串常量的首地址赋给指针 coutpendl; 输出字符串指针就是输出字符串 p++; coutpendl; cout*pendl;输出字符指针的间接引用,就是输出单个字符 p=buffer; coutpendl; } 用指向数组的指针变量输出数组的全部元素 void main( ) { int a[10], i; int *p; for (i=0; i10; i++) cina[i]; for (p=a; pa+10; p++) cout*p‘\t’; } void main( ) { int a[10], i; int *p=a; for (i=0; i10; i++) cina[i]; for (i=0; i10; i++) cout*p++‘\t’; } 输入数组元素 指针变量赋初值 指向下一元素 输出指针指向的数据 *p, p=p+1 输出数据后指针加1

文档评论(0)

zhuliyan1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档