- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 指针、数组与结构
第5章 指针、数组和结构 5.1 指针 1、指针的定义 T T* char c=‘a’; char *p=c; char c2=*p 各种类型指针: int *pi; char **ppc; int *ap[15]; int (*fp)(char*); int *fp (char *); 5.1.1零 0可以被用于作为任意类型的常量 const int NULL=0; 0可以被用于指针常量; int *p=NULL; int *p=0;(C++) 5.2 数组 T T[size] float v[3]; char* a[32]; int b[2][3]; size为常量表达式 void f(int i) { int v1[i];//错误 vectorint v2(i);//可变界数组 int bad[5,2] ;//错误 } 5.2.1 数组初始化 当数组声明中没给出数组大小,有初始化列表,则大小由列表元素个数决定。 int vl[ ]={1,2,3,4} char v2[3]={‘a’,’b’,0}; 给出大小,则初始化列表给出多于元素就是错误。 char v3[2]= {‘a’,’b’,0}; 给出大小,如初始化列表的元素太少则由0补。 int v5[8]={1,2,3,4}; 5.2.2 字符串文字量 “this is a string” 长度: 存储长度:sizeof(“hello”) 类型:适当个数的const字符的数组 const char[6] 可以将字符串文字量给char *赋值,但不能通过该指针修改字符串文字量。 void f() { char* p=“plato” p[4]=‘e’; } 改为 void f() { char p[]=“zeno”;// char p[5]; p[0]=‘R’; } 字符串文字量是静态分配的,可作为函数返回值。 const char* error_message(int i) { //… return “range error”; } 字符串文字量可有转义符 “asdsfgf\00sdsad” 5.3 到数组的指针 一个数组的名字能够被用作到它的开始元素的指针。 int v[]={1,2,3,4}; int *p1=v; int *p2=v[0]; int *p3=v[4]; 从数组名到这个数组的开始元素的隐式转换在C风格中广泛使用 extern “C” int strlen(const char *);//string.h void f() { char v[]=“Annermarie”; char*p=v; strlen(p); strlen(v); v=p; } 5.3.1 在数组里漫游 指向数组的指针运算: p1+1; p3-1; p1++; p3--; 当两个指针指向同一个数组元素时,指针相减才有定义。 两个指针相加是不允许的。 数组不具有自述性,遍历时需提供元素个数 void fp(int v[],unsigned int size) { for(int i=0;isize;i++) use(v[i]); } 大多数C++实现不提供对数组范围的检查。 5.4 常量 1、定义——“不变化的值” const int model=90; const int v[]={1,2,3,4}; const int x; 常量必须初始化 将某些东西声明为常量,就保证了其作用域内不能改变它们的值。 例题: void f() { const int model=90; const int v[]={1,2,3,4}; model=200; v[2]++; } const改变了类型,但没有描述常量如何分配 void g(const X*p) {*p= ; } void h() { X val; g(val); } const最常见的作用是作为数组的界和作为分情况标号。 const int max=128; int v[max]; const int a=100; void f(int i) { switch(i){ case a: //… } 5.4.1 指针和常量 const char *pc; 到const char的指针 char *const cp; 到char 的const 的指针 void f1(char*p) { char s[]=gorm; const char *pc=s; pc[3]=g; pc=p; char *const cp=s; cp[3]=a; cp=p; const char*const cpc=s; cpc[3]=
文档评论(0)