- 1、本文档共29页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4章数组与指针
第4章 数组与指针 主要内容 指针与数组 指针与字符串 动态内存分配 引用变量 三、指针与数组 指针与一维数组 指针与二维数组 字符指针与字符串 ?数组的地址(首地址) 2、指针与二维数组 指针变量指向二维数组中的某个一维数组 指针变量取得二维数组首地址的方法 指针变量 = 二维数组名 指针变量 = 二维数组名[0][0] 指针变量 = 二维数组名[0] 指针变量 = 二维数组名[0] 数组名: 指向数组首元素的指针 指向二维数组中某个元素的指针 访问二维数组元素的方式 二维数组a[M][N]中下标为i, j的元素: 【例】用指针变量输出二维数组 等价程序: 几个需搞清楚的概念 指针常量 类型名* const 指针名 = 变量名; 常量指针 const 类型名 * 指针名; int x = 10, y = 20; const int z = 30; const int * px = x; px = y; //正确 *px = 40; //错误 y = 40; //正确 px = z; //正确 z = 40; //错误 常量指针常量 int x = 10, y = 20; const int * const px = x; px = y; //错误 *px = 40; //错误 x = 40; //正确 四、动态存储分配 内存分配 静态分配——程序编译阶段分配存储空间。 动态分配——程序运行阶段分配存储空间。 静态分配和动态分配在内存中的不同的存储区进行。 格式举例: 使用动态存储空间 2、delete操作符 将new运算符动态分配的存储空间重新归还给系统,若没有使用这种运算归还,则只有等到整个程序运行结束才被系统自动回收。 格式举例: 四、引用变量 类型关键字 引用变量名 =已定义的同类型变量; 引用与函数 ios operator=(const ios); * * 指针与引用 ?数组中各元素的地址 数组名——代表数组的首地址 一维数组a[N]中,下标为 i 的元素的地址为:a + i * sizeof ( DataType ) 二维数组a[M][N]中,下标为i, j的元素的地址为: a + ( i * N+j ) * sizeof ( DataType ) 第一个元素的地址——数组的首地址 p1 p2 指针变量指向二维数组中的某个元素 ? 指针p1, p2 的类型 ? int a[3][4]={ { … }, { … }, { … } } ; p1 = a; int (* ) [4] int (*p1) [4] = a[0]; p1++; 二维数组名 a 一维数组名 a[ i ] int * p2 = a[ 1 ] ; p2[2] = p2[0]+10 ; p2++; p1 p2 指针变量=数组名[下标1][下标2] int * p3 = a [ 0 ][ 0 ] ; p3++ ; int * q = a [ 2 ][ 3 ] ; q++ ; (*(a+ i ) )[ j ] *(a[ i ]+j) *(*( a+i )+j ) a[ i ][ j ] 一维数组的第i+1个元素a[ i ]为*( a+i ); 二维数组的第i+1行即a[ i ], 是一个一维数组,其第j+1个元素为*( a[ i ]+j )。 a a[0] … { a[ i ] … } { a[0][0] … a[0][ j ] … } { a[ i ][0] … a[ i ][ j ] … } … … … … int main( ){ int a[3][6]={{1,2,3,4,5,6}, {7,8,9,10,11,12},{13,14,15,16,17,18}}; int * ptr, i, j; ptr=a[0][0] ; //或 ptr = *a; 而不能ptr = a; for(i=0;i18;i++) cout*(ptr+i)\t; coutendl; int (* ptr1)[6]; //ptr1是指向含6个整型元素的一维数组的指针 ptr1=a; for(i=0;i3;i++){ for(j=0;j6;j++) cout*(*(ptr1+i)+j)\t; coutendl; } return 0;} int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int i, j; int (* p1)[4] = a; int *p2; for( i=0; i3;
文档评论(0)