网站大量收购独家精品文档,联系QQ:2885784924

C++(day07)C++实务精选罕见资源大集合.docx

C++(day07)C++实务精选罕见资源大集合.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++ 笔记 2007 年 3 月 30 日 1、数组是自动分配空间,指针要手工分配空间(int *p = new int;) 2、在 Unix 上,程序出现段错误的时候,系统会生成core 文件,会把出现错误的那一刻的程序镜像保存在此文件中 3、结构的成员变量出现数组: struct Account{ long id ; //char name[ 50 ] ; //char password[ 10 ] ; char * pname ; char * ppwd ; double balance ; }; 数组长度 100-200 字节,最好用数组做,这样方便 数组很大的时候,可以考虑用指针,赋值的时候要注意: a.pname = new char[50]; strcpy(a.pname , huxinzhe); 在结构声明时,不能给成员变量赋值 结构声明只是声明了一种数据类型,还没有为这个结构申请空间,赋值的数据没有空间保 存 4、危险指针的用法 使用NULL 指针的内容 ---隐蔽性不高,容易发现 使用没有初始化的指针 --- 会导致无意当中修改其它变量,破坏性很大,避免的办法 int *p = NULL; 使用已经被 delete 的指针内容 --- 修改其它变量 避免的办法 delete p ; p=NULL; 返回一个局部变量的地址 由函数申请空间,由调用者释放 #include iostream using namespace std; char * readLine(){ char * line = new char[ 100 ] ; //在函数中申请了空间,但是没有地方释放strcpy( line , hello world ) ; coutline = line endl; return line ; //返回变量的指针,若是局部变量,在函数返回的时候,就消失了,若在堆中申请空间,没有释放空间的机会 } int main(){ char * p = readLine(); coutreturn from readLine endl; coutp = p endl; delete p; //释放别人申请的空间,不安全return 0 ; } 解决的办法 : 在函数外部申请一个指针并初始化,作为参数传给函数,这样可以保存数据并返回 在参数中传数组的起始地址,和数组长度只要是参数传指针,指针在传给函数之前要进行初始化 5、编译的时候不想看到警告信息 g++ -w 6、函数指针的声明: 函数的名字就是这个函数的首地址 函数指针之间的赋值,也要同类型的函数指针是不需要释放的。 函数指针,设计通用算法 7、多层指针 int i = 10; int * p = i; int ** pp =p; int**(*ppp) = pp; *p = i ; *pp = p; **pp = i; 多层指针的使用 : int ia[2][3] = {{11,12,13}, {21,22,23}}; //声明并定义一个二维数组cout ia[0] endl; //打印的是 ia 的第一个数组的首地址 int * p = ia[0]; //保存 ia 第一个数组的首地址cout a[0][2] endl; cout p[2] endl; //与上面一行具有相同的效果 。 ia[0]的类型就是int*类型的,指向ia 的第一个数组ia 也是个指针类型,指向那个二维数组 ,是 int** 二维数组是一个二级指针 二维数组的每个元素是一级指针 int (*pp)[3] = ia; //行指针,指向二维数组的一行,[]中的数字表示每一行的元素个数 cout pp[1][1] endl; //通过二级指针去数组元素 pp[1][1] = *( *(pp+1) +1 ) 行指针可以描述指向数组的元素个数,以行为单位,加1 就是指针指到下一行打印数组在内存中地址 int (*p1)[3] -- p1 的类型是int[3] p1+1,走 3 个 int,一个数组的长度int ** p2 -- p2 的类型是int* p2+1,走 1 个 int 8、char* names[100]; 声明一个数组,每个元素类型是char* chat* names[3] = {liucy,huxz,tangliang}; //这样的声明更清晰的说明是 char 的二维数组 for(int i = 0 ; i 3 ; i++){ cout names[i] endl; //打印每个元素 } 9、void* 任何类型的变量的地址都可以把地址存进来 通用指针的存储,不能做任何运算,是纯粹的存储地址而用 10、const 与指针 const int *p

文档评论(0)

hao187 + 关注
官方认证
内容提供者

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

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档