C 数组

C 数组

数组是一组相同类型元素的顺序集合。数组中的每个元素的类型相同。
数组元素可以通过索引访问,第一个索引值为0。

下标 数组的第n个元素 访问
0 1 a[0] (或 a)
1 2 a[1]
n n+1 a[n]

 

一维数组的声明

类型 数组名 [常量表达式]
例: int a[10];    //定义数组名为a,长度为10的int型数组

   #define A 5  //宏定义 符号常量
   int b[A];

   int n = 10;
   int c[n]     //报错!要填入 常量表达式。C99才支持这样写,称为变长数组

 

一维数组的初始化

例:
   int a[5] = {1, 2, 3, 4, 5}  //大括号{}括住数组元素,元素之间逗号 , 隔开
   int b[5] = {1, 2, 3}        //填入元素个数小于数组长度,后面剩余元素默认为0

   int c[] = {1, 2, 3, 4}      //不填数组长度,以填入的元素个数为数组长度
   int d[4] ={1, 2, 3, 4}      //与数组c等价

   //有规律的数组元素也可以用 循环 进行赋值
   int e[5];
   int i = 0;
   for (i = 0;i < 5;i++)
   {
       e[i] = i * 2;                //e[5] = {0, 2, 4, 6, 8}
   }

 

一维数组元素的引用

引用形式为:数组名[索引]
例:
   int a[] = {1,2,3,4,5};
   printf("第四个元素为: %da",a[3])    //数组 a 的第 4 个元素(索引从 0 开始)

 

注:数组存储字符串时,要特别关注一下问题

  1. printf()函数以字符串形式 %s 打印字符数组中的字符,要确保数组末尾以 ‘\0’ 结束。
  2. strlen()函数计算字符数组中元素个数时,要确保数组末尾以 ‘\0’ 结束,计算元素不包含数组末尾的 ‘\0’。
  3. sizeof() 运算符计算数组的整体大小,包含末尾的 ‘\0’。
例:
    char arr1[] = "abc";                //['a']、['b']、['c']、['\0']
            char arr2[3] = "abc";            //['a']、['b']、['c']  指定数组大小刚好为元素个数,末尾没存'\0'
    char arr3[] = { 'a', 'b', 'c' };    //['a']、['b']、['c']
    char arr4[] = { 'a', 'b', 'c', '\0'};    //['a']、['b']、['c']、['\0'] 初始化手动加入 '\0'
    char arr5[5];                            //未初始化

    printf("arr1:  %s\n", arr1);                //abc 
    printf("arr2:  %s\n", arr2);                //abc烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫虜怰x
    printf("arr3:  %s\n", arr3);                //abc烫烫蘟bc烫烫烫烫烫烫烫烫烫烫烫烫滔鵜Y蠐
    printf("arr4:  %s\n", arr4);                //abc
    printf("arr5:  %s\n", arr5);                //烫烫烫烫烫烫烫烫烫烫烫烫烫烫奆??
    //乱码,printf以 '\0'为结束,arr2、arr3结尾是 'c' ,会继续打印往后内存单元中的内容,到 '\0'才结束
    //printf()函数以字符串形式 %s 打印字符数组中的字符,要确保数组末尾以 '\0' 结束。

    printf("arr1: %d\n", strlen(arr1));    // 3
    printf("arr2: %d\n", strlen(arr2));    // 67(大于3的随机值)strlen以 '\0'为结束
    printf("arr3: %d\n", strlen(arr3));    // 35(大于3的随机值)
    printf("arr4: %d\n", strlen(arr4));    // 3
    printf("arr5: %d\n", strlen(arr5));    // 34(随机值)
    //strlen()函数计算字符数组中元素个数时,要确保数组末尾以 '\0' 结束,计算元素不包含数组末尾的 '\0'。


    printf("arr1: %d\n", sizeof(arr1) / sizeof(arr1[0]));    // 4
    printf("arr2: %d\n", sizeof(arr2) / sizeof(arr2[0]));    // 3
    printf("arr3: %d\n", sizeof(arr3) / sizeof(arr3[0]));    // 3
    printf("arr4: %d\n", sizeof(arr4) / sizeof(arr4[0]));    // 4
    printf("arr5: %d\n", sizeof(arr5) / sizeof(arr5[0]));    // 5
    //sizeof() 运算符计算数组的整体大小,包含末尾的 '\0'。

 

二维数组


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1401362462@qq.com

文章标题:C 数组

字数:942

本文作者:百xiao生

发布时间:2022-10-16, 20:44:54

最后更新:2022-10-23, 23:40:38

原始链接:https://baixiaoshengzjj.top/2022/10/16/C%20%E6%95%B0%E7%BB%84/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。