【C语言】数组

【C语言】数组:

  • 存储一系列相同类型的数据。
  • 内存的地址连续。最低的地址对应第一个数据,最高的地址对应最后一个数据。
  • 可用索引访问。第一个数据索引号为0。
  • 也可以用指针处理数组。一般,数组名自动转换为指向数组首元素的指针。

(1-1)声明数组,为数组赋值

声明数组:元素类型 数组名[元素数量];

为数组赋值(索引号从0开始):数组名[索引号] = 数据;

int numbers[5];         // 声明数组
numbers[0] = 1;         // 为数组中第一个元素赋值
numbers[1] = 2;         // 为数组中第二个元素赋值
...
numbers[4] = 5;         // 为数组中第五个元素赋值

(1-2)初始化数组

 ① 元素类型 数组名[元素数量] = {数据1, 数据2,...};

元素数量可省略,元素数量默认为数组初始化时的元素个数。
 ② 元素类型 数组名[ ] = {数据1, 数据2,...}; 

// 初始化数组
int numbers[5] = {1,2,3,4,5};
int numbers[] = {1,2,3,4,5};

(2)访问数组元素:数组名[索引号]

int numbers[] = {1,2,3,4,5};
numbers[2]                  // 访问数组第3个元素(索引号从0开始)


例如:
#include <stdio.h>
int main(void)
{
    int numbers[5];
    numbers[0] = 1;
    numbers[1] = 2;
    numbers[2] = 3;
    numbers[3] = 4;
    numbers[4] = 5;
    printf("%d\n", numbers[2]);
    return 0;
}

#include <stdio.h>
int main(void)
{
    int numbers[] = {1,2,3,4,5};
    int k = numbers[2];
    printf("%d\n", k);
    return 0;
}

(3)获取数组长度

数组长度不是数组元素的数量,而是数组占用的内存大小(单位byte)。数组元素的数量=数组长度/每一个元素的长度。

sizeof(数组名);       // 获取数组长度

例如:
#include <stdio.h>

int main(void)
{
    int numbers[] = {1,2,3,4,5};
    int length = sizeof(numbers);
    int num = length /sizeof(numbers[0]);
    printf("numbers's length is %d, numbers's elements are %d\n", length, num);
    return 0;
}

// 结果为:64位的计算机int类型4bytes,5个int数据共20bytes
// numbers's length is 20, numbers's elements are 5

补充:【C语言】字符数组:

1-1、初始化数组:char 数组名[ ] = 字符串;

注意:① char:基本数据类型,单个字符,一个字符占一个字节。字符串:一串字符组成的数组,C语言不存在字符串数据类型。

           ② 字符串的结尾符是\0,占一个字节,因此字符串占用内存大小(单位:字节)为字符数量+1。

#include <stdio.h>

int main(void)
{
    char s[] = "hello";     // 字符串结尾是\0
    printf("%s,the first char is %c\n", s, s[0]);
    return 0;
}

1-2、复制字符串到字符数组的存储区域

#include <stdio.h>
#include <string.h>

int main(void)
{
    char s[6];                  // 为数组提供存储空间,注意字符串结尾是\0,占一个字节
    strcpy(s, "hello");         // 复制字符串,遇到结束符\0就停止    
    printf("%s,the first char is %c\n", s, s[0]);
    return 0;
}

1-3、指针变量。此处的指针一开始没有设置指向,不存在指向混乱。

指针变量是用来存放内存地址的变量。需提前声明:基类型 *指针变量名;

#include <stdio.h>

int main(void)
{
    char *s;          // 指针变量声明
    s = "hello";
    printf("%s,the first char is %c\n", s, s[0]);
    return 0;
}

 可能遇到的报错:

解决:尝试使用以上3种方法操作字符数组。

          以下操作是错误的。

2、① 获取数组中的字符个数即字符数组中有多少个字符(不包括结尾符\0)

      标准库string.h中的strlen(字符数组)

      ② 获取数组占用的内存大小:sizeof(字符数组)

#include <stdio.h>
#include <string.h>

int main(void)
{
    char s[] = "hello";                // 字符串结尾是\0
    printf("%d\n", strlen(s));         // 获取字符个数
    printf("%d bytes\n", sizeof(s));   // 获取内存大小
    return 0;
}

// 结果为:
5
6 bytes


 

  • 16
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值