从C出发 13 --- 多维数组

从C出发 13 --- 多维数组_第1张图片

数组的本质是数据集合,我们在程序里面操作数组,就是在操作数据

数组中的元素能不能是其他程序元素?

从C出发 13 --- 多维数组_第2张图片

 从C出发 13 --- 多维数组_第3张图片

这个说法只是表示数组里面的元素是int 类型   而这个数组的类型是 int [5]  由元素类型和数组大小共同决定

int a[10] = {0};   // a的类型 : int[10]
int b[5];          // b的类型 : int[5]
int i = 0;


b = a; //这样写错误,因为数组名可以看作常量,不能出现在赋值符号的左边

printf("sizeof(int[5]) = %d\n", sizeof(int[5]));
printf("sizeof(int[10]) = %d\n", sizeof(int[10]));    //sizeof是用来获取占用内存的字节数


for(i=0; i< 10;i++)
{ 
    b[i] = a[i];  //这样写错误,因为越界了   也可以从数组的类型来解释  
}

数组它是有自己特别的类型的


从C出发 13 --- 多维数组_第4张图片

 数组名为: Name    数组大小: [N1]  数组里面元素的类型: type [N2]

从C出发 13 --- 多维数组_第5张图片

从C出发 13 --- 多维数组_第6张图片

从C出发 13 --- 多维数组_第7张图片

 从C出发 13 --- 多维数组_第8张图片

 从C出发 13 --- 多维数组_第9张图片

从C出发 13 --- 多维数组_第10张图片

 1表示 第一维 

 2表示 第二维

二维数组就是数组的数组   我们得知道数组里面元素的具体类型  而数组的类型由2个要素组成,第一个要素是 具体的变量的类型 int    第二个要素 就是大小  [4]

C语言里面只有一个数组的概念,多维数组是我们扩展出来的,为了与扩展出来的多维数组区别开来,就把之前所学到的数组叫做一维数组

从C出发 13 --- 多维数组_第11张图片

int a[][3] = {{1,2},{3,4}}; //对0号元素和1号元素进行初始化,对0号元素而言给出了2个值,1号元素也出了2个值,如果有第三个值,那么这个没有被给定初始值的元素打印为0
int s1 = sizeof(a) / sizeof(a[0]);  //2
int i =0;
int j =0;

printf("s1 = %d\n", s1);
printf("sizeof(a) = %d\n", sizeof(a));  //a 所占用的内存数是24个字节   
printf("sizeof(a[0]) = %d\n", sizeof(a[0])); //a中第0号元素占用的内存是12个字节  因为a[0] 的类型是int[3], 是一个数组类型 这个数组有3个元素,每个元素为int  3*4 = 12  a[1] 所占用的内存也为12个字节
  

for(i=0; i
int a[][3] = {1, 2,3, 4};

从C出发 13 --- 多维数组_第12张图片

 继续改进,不要让出现警告从C出发 13 --- 多维数组_第13张图片

 


二维数组编程练习

从C出发 13 --- 多维数组_第14张图片

 

int a[3][3]; 
int i =0;
int j =0;
 

for(i=0; i<3; i++)
{
    for(j=0; j<3;j++)
    {
        printf("Input a[%d][%d]: ", i ,j); 
        scanf("%d", &a[i][j]);
                                                
    }
}

printf("Matrix:\n");

for(i=0; i<3; i++)
{
    for(j=0; j<3;j++)
    {
        printf("%d: ", a[i][j]);                                               
    }
    
    printf("\n");
}

for(i=0; i<3; i++)
{
    for(j=0; j<3;j++)
    {
        if(i < j)
        {
            int t = a[i][j];
            a[i][i] = a[j][i];
            a[j][i] = t;
        }                                               
    }
}

printf("Matrix-T:\n");

for(i=0; i<3; i++)
{
    for(j=0; j<3;j++)
    {
        printf("%d: ", a[i][j]);                                               
    }
    
    printf("\n");
}

从C出发 13 --- 多维数组_第15张图片

 从C出发 13 --- 多维数组_第16张图片

 


从C出发 13 --- 多维数组_第17张图片

 不管如何扩展成几维数组,C语言中只有一种类型的数组,当数组里面的元素是另一个数组的时候,就变成了多维数组,为了和多维数组这个概念区别开来,C语言里面的数组又叫做一维数组

从C出发 13 --- 多维数组_第18张图片

 如果说数组里面的元素是一般的变量,是int 类型变量或者float 类型变量等等,那么就是一维数组,C语言里面只有一维数组

你可能感兴趣的:(从C出发,c语言,数据结构,算法)