在C

时间:2016-05-04 07:37:31

标签: c arrays sorting

我的计算机书中有这段代码:

#include<stdio.h>
#include<conio.h> 
#include<string.h>
void main(void)
{
    clrscr();
    char list[10][20],name[20];
    int i,j;
    for(i=0;i<10;i++)
    {
        printf("\nEnter the Name of Student %d",i+1);
        gets(&list[i][0]);
    }
    for(i=0;i<10-1;i++)
        for(j=0;j<10-1;j++)
            if(strcmp(&list[j][0],&list[j+1][0])>0)
            {
                strcpy(name,&list[j][0]);
                strcpy(&list[j][0],&list[j+1][0]);
                strcpy(&list[j+1][0],name);
            }
    printf("\nThe Sorted Name List is :");
    for(i=0;i<10;i++)
        printf("\n%s",&list[i][0]);
    getche();
}

我想知道为什么数组&#34; list&#34;被声明为列表[10] [20],但当它用于存储名称时,它只使用1个循环,即只有i,第二个索引或下标总是保持为零,而声明中它是20!

1 个答案:

答案 0 :(得分:2)

&#34;列表&#34;它被用作c字符串的数组,但是每个这样的字符串本身又是一个char数组,所以你得到一个二维数组,其中&#34;外部&#34; dimenstion代表字符串和&#34; inner&#34;维数一个数组来存储字符串(最大长度为20个字符)。

因为获取将填写这样一个字符串,它已经使用了整个&#34;内部&#34;维度,所以你只需要遍历&#34;外部&#34;尺寸。