C语言数组

#include <stdio.h>
void printArray(int array[], int length)
{
    for (int i = 0; i<length; i++)
    {
        printf("array[%d] = %d 
", i, array[i]);
    }
}
void printArrayAddr(int array[])
{
     printf("array的地址是%p 
", array);
}
int main()
{    /************************************************
      *
      *    使用数组注意事项:
      *
      *  正确写法
      *
      *    1、定义数组时进行初始化  int ages[5] = {10 , 11, 12, 67, 56};
      *    2、定义数组时,只初始化部分数组元素,其他的默认为0
      *       int ages[5] = {10, 11};
      *    3、定义数组时初始化指定下标的元素
      *       int ages[5] = {[3] = 10, [4] = 11};
      *    4、如果知道数组的大小定义数组时可以省略数组的大小
      *       int ages[] = {10, 11, 14};
      *    5、使用字符或者常量或者常量的运算结果作为数组的大小
      *       int ages['A'] = {10, 11, 12, 14, 16};
      *       int ages['A'- 50] = {10, 11, 12, 14, 16};
      *       int ages[60 - 50] = {10, 11, 12, 14, 16};
      *    6、数组的大小使用一个变量指定,但是此时不能对数组进行初始化
      *      int count = 5;
      *      int ages[count];
      *      ages[0] = 10;
      *      ages[1] = 11;
      *      ages[2] = 18;
      *
      *   错误写法:
      *
      *    1、没有标明数组的大小  int ages[];
      *    2、在声明数组后对数组进行初始化
      *       int ages[5];
      *       ages = {10, 11, 12, 14};
      *    3、数组的大小使用一个变量指定,并且对数组进行初始化
      *      int count = 5;
      *      int ages[count] = {10, 11, 12};
      *    4、使用类似其他语言声明数组的方法:
      *      int[5] ages;
      *
      *   计算数组的长度:
      *      int count = sizeof(ages)/sizeof(int);
      *   当一个函数的参数是数组时,如果我们传递一个数组名调用函数此时传递的是数组的地址,
      *   当我们在函数中对数组中相应位置的数据进行修改,此时修改的是数组中的数据
      *
      *   二维数组:二位数组可以看做是数组的数组,比如a[2][2]是由a[0]和a[1]组成,
      *   其中a[0]包含a[0][0],a[0][1],a[1]包含a[1][0],a[1][1].
      *
      ***************************************************/

      //1、定义数组时进行初始化  int ages[5] = {10 , 11, 12, 67, 56};
       printf("1、定义数组时进行初始化  int ages[5] = {10 , 11, 12, 67, 56};
");
       int ages[5] = {10 , 11, 12, 67, 56};
       printArray(ages,sizeof(ages)/sizeof(int));
       printf("
");
       //2、定义数组时,只初始化部分数组元素,其他的默认为0
       printf("2、定义数组时,只初始化部分数组元素ages2[5] = {10 , 11};,其他的默认为0
");
       int ages2[5] = {10 , 11};
       printArray(ages2,sizeof(ages2)/sizeof(int));
       printf("
");
       // 3、定义数组时初始化指定下标的元素 int ages[5] = {[3] = 10, [4] = 11};
       printf("3、定义数组时初始化指定下标的元素 int ages[5] = {[3] = 10, [4] = 11};
");
       int ages3[5] = {[3] = 10, [4] = 11};
       printArray(ages3,sizeof(ages3)/sizeof(int));
       printf("
");
       //4、如果知道数组的大小定义数组时可以省略数组的大小 int ages[] = {10, 11, 14};
       int ages4[] = {10, 11, 14};
       printf("4、如果知道数组的大小定义数组时可以省略数组的大小 int ages[] = {10, 11, 14};
");
       printArray(ages4,sizeof(ages4)/sizeof(int));
       printf("
");
      // 5、使用字符或者常量或者常量的运算结果作为数组的大小 int ages['A'] = {10, 11, 12, 14, 16};
       printf("使用字符或者常量或者常量的运算结果作为数组的大小 int ages['A' - 60] = {10, 11, 12, 14, 16};
");
       int ages5['A' - 60] = {10, 11, 12, 14, 16};
       printArray(ages5,sizeof(ages5)/sizeof(int));
       printf("
");
       //6、数组的大小使用一个变量指定,但是此时不能对数组进行初始化,如果有的数组元素没有初始化会出现不可预知的值
       printf("6、数组的大小使用一个变量指定,但是此时不能对数组进行初始化
");
       int count = 5;
       int ages6[count];
       ages6[0] = 10;
       ages6[1] = 11;
       ages6[2] = 18;
       printArray(ages6,sizeof(ages6)/sizeof(int));
       printf("
");
       printf("数组地址
");
       int addr[3] = {1,2,3};
       //数组名代表数组的地址
       printf("数组addr地址是:%p
",addr);
       printf("调用函数:
");
       printArrayAddr(addr);
       for (int i=0; i<3; i++)
       {
           printf("数组addr[%d]的地址是:%p
", i, &addr[i]);
       }
       printf("
");
       int barray[2][2] = {{1,2},{3,4}};
       printf("barray的地址是:%p
",barray);
       printf("barray[%d]的地址是:%p
", 0, barray[0]);
       printf("barray[0][0]的地址是:%p
", &barray[0][0]);
       printf("barray[0][1]的地址是:%p
",&barray[0][1]);
       printf("barray[1]的地址是:%p
",barray[1]);
       printf("barray[1][0]的地址是:%p
",&barray[1][0]);
    return 0;
}
1、定义数组时进行初始化  int ages[5] = {10 , 11, 12, 67, 56};
array[0] = 10 
array[1] = 11 
array[2] = 12 
array[3] = 67 
array[4] = 56 

2、定义数组时,只初始化部分数组元素ages2[5] = {10 , 11};,其他的默认为0
array[0] = 10 
array[1] = 11 
array[2] = 0 
array[3] = 0 
array[4] = 0 

3、定义数组时初始化指定下标的元素 int ages[5] = {[3] = 10, [4] = 11};
array[0] = 0 
array[1] = 0 
array[2] = 0 
array[3] = 10 
array[4] = 11 

4、如果知道数组的大小定义数组时可以省略数组的大小 int ages[] = {10, 11, 14};
array[0] = 10 
array[1] = 11 
array[2] = 14 

使用字符或者常量或者常量的运算结果作为数组的大小 int ages['A' - 60] = {10, 11, 12, 14, 16};
array[0] = 10 
array[1] = 11 
array[2] = 12 
array[3] = 14 
array[4] = 16 

6、数组的大小使用一个变量指定,但是此时不能对数组进行初始化
array[0] = 10 
array[1] = 11 
array[2] = 18 
array[3] = 5 
array[4] = 4200756 

数组地址
数组addr地址是:0022fe58
调用函数:
array的地址是0022fe58 
数组addr[0]的地址是:0022fe58
数组addr[1]的地址是:0022fe5c
数组addr[2]的地址是:0022fe60

barray的地址是:0022fe48
barray[0]的地址是:0022fe48
barray[0][0]的地址是:0022fe48
barray[0][1]的地址是:0022fe4c
barray[1]的地址是:0022fe50
barray[1][0]的地址是:0022fe50
原文地址:https://www.cnblogs.com/heml/p/3528774.html