码迷,mamicode.com
首页 > 编程语言 > 详细

二维数组与指针

时间:2015-12-01 23:10:32      阅读:343      评论:0      收藏:0      [点我收藏+]

标签:

  二维数组: int / char / flaot a[n][m]; 可以看做是将一维数组做为基本类型产生的一维数组的数组类型,共n*m个最基本类型。这样看有许多优点(实际上计算机也是这样分配的)。

    二维数组数组名的注意事项:

1 #include <stdio.h>
2 int main()
3 {
4     int *p,a[3][4];
5     p = a;//a是二维数组的首地址本质为行指针,原型为 a[][];无法赋值给普通指针类型 *p;
6     return 0;
7 }

    编译就会出现如下错误 : error: cannot convert ‘int [3][4]‘ to ‘int*‘ in assignment ;

   

   如需使用二维数组的首地址,就得将 p = a; 改成p = a[0] ;这样就变成一位数组名地址复制给普通指针。

1 #include <stdio.h>
2 int main()
3 {
4     int *p,a[3][4];
5     p = a [0]; //改变了赋值的类型
6     printf("p = %p",p);
7     return 0;
8 }

 

  运行如图:

技术分享 

    

    二维数组: int / char / flaot a[n][m]; 可以看做是将一维数组做为基本类型产生的一维数组的数组类型,共n*m个最基本类型。这样看有许多优点(实际上计算机也是这样分配的)。(注意点) 以char为例,那就是有n个 可以存储m字节的字符串,数组名就是 二维数组名+ 第一个下标 ,也就是地址了。

    

1 #include <stdio.h>
2 int main()
3 {
4     char a[3][10];
5     gets(a[0]); //二维数组名+第一下标,看着是一维数组名
6     puts(a[0]);
7     return 0;
8 }

 

   运行图:

技术分享

二维数组与指针

标签:

原文地址:http://www.cnblogs.com/rldlfm/p/5011497.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!