关于二维数组的一个概念问题 头脑好乱

来源:百度知道 编辑:UC知道 时间:2024/06/10 07:52:02
比如char a[10][20];
是不是 定义一10个二维数组啊,每个数组的长度是20个字符呢?
还是什么其它的啊 我二维数组没看懂啊 书上就写一页 。。。。。
嗯 刚开始是如一楼所理解的
但是在这道题目中为什么只要输入十个数字呢
输入十个字符串比较大小
#include "stdio.h"
#include "string.h"
void main(){
char b[20],a[10][20]; 这句就输入10个字符串呀 为什么不是200个元素呢
int i,j;
printf("input:\n");
for(i=0;i<9;i++)
gets(a[i]);
for(i=0;i<9;i++){
for(j=i+1;j<9;j++){
if(strcmp(a[i],a[j])>0){
strcpy(b,a[j]);
strcpy(a[j],a[i]);
strcpy(a[i],b);
}
}
}

for(i=0;i<9;i++)
puts(a[i]);
}
那上面这道题的char a[10]20]这句话完全没必要用二维数组啊 改成定义一个一维数组char a[10]不就行了???
上课老师好像是说char a[10]20]这句话 是定义10个变量 每个变量长度为20.。。。。。
有点晕

可以把二维数组看成一个表格,比如这个数组int a[10][20],就是有10行,每行有20个元素的一个数组。

**********************************************

char b[20],a[10][20]; /*这句就输入10个字符串呀 同时也是200个元素(200个char 类型的元素,C语言中,字符串就是字符数组)*/

上课老师好像是说char a[10]20]这句话 是定义10个变量 每个变量长度为20

这么说也没错,它就相当于定义10个变量(10个一维数组),每个变量长度为20(每个一维数组中可容纳20个字符)

char b[20],a[10][20]; 这句就输入10个字符串呀 为什么不是200个元素呢
错了!!!,这只是分配空间,后面比较是都是用b和a[i]比较的,不是跟a比较的

所以楼上说的对的,a[10][20]定义的是一个10个的一维数组,每个一维数组里有20个元素