标签:
二维数组: 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