数据结构-数组

1、数组

概念

构造数据类型之一
数组是具有一定顺序关系的若干个变量的集合,组成数组的各个变量称为数组的元素。
数组中各元素的数据类型要求相同,用数组名和下标确定。数组可以是一维的,也可以多维
数组就是一组相同类型的数据
在这里插入图片描述数组就是用一段连续的空间存储相同类型的变量

数组的定义

//定义数组前 必须明确 有几个元素      每个元素类型啥?
//需求:定义一个数组 有10个元素  每个元素为int类型

//数组定义步骤:
//1、数组名 与[]结合是数组           (与*结合是指针  与()是函数)
//2、将元素的个数 放入[]中
//3、用元素的类型 定义一个变量
//4、从上往下 整体替换
int arr[10];

数组元素的描述

void test01()
{
    //有10个元素 元素的下标从0开始 0~9
    //arr[0] 第0个元素 ~arr[9]第9个元素
    int arr[10];
    //arr数组名作为类型 代表的是数组的总大小 = 元素的个数 * 每个元素的大小
    printf("sizeof(arr) = %d\n",sizeof(arr));//数组的总大小
    printf("sizeof(arr[0]) = %d\n",sizeof(arr[0]));//第0个元素的大小
    //数组的个数 = 数组的总大小 / 元素的大小
    int n = sizeof(arr)/sizeof(arr[0]);//元素的个数

    //数值数组 不能整体操作 只能逐个元素操作
    for (int i = 0; i < n; i++)
    {
    //{}里面定义的数组为局部数组 不初始化 内容为随机
        printf("第%d个元素为%d\n", i, arr[i]);
    }
}

数组的初始化

void test02()
{
    //全部初始化 元素的个数可以省略
    // int arr[10] = {1,2,3,4,5,6,7,8,9,10};
    //如果数组的元素个数省略 元素实际个数 由初始化决定
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    int n = sizeof(arr)/sizeof(arr[0]);

    for (int i = 0; i < n; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");

    //部分初始化 未被初始化的部分自动补0
    int arr2[10] = {1,2,3,4,5};
    n = sizeof(arr2)/sizeof(arr2[0]);
    for (int i = 0; i < n; i++)
    {
        printf("%d ", arr2[i]);
    }
    printf("\n");

    //部分初始化的妙用(清空数组)
    int arr3[10] = {0};//将第0个元素初始化为0 其他自动补0 所以全部为0
    n = sizeof(arr3)/sizeof(arr3[0]);
    for (int i = 0; i < n; i++)
    {
        printf("%d ", arr3[i]);
    }
    printf("\n");

    //指定下表初始化
    int arr4[10] = {[1]=10, [3]=30, [5]=50};//了解
    n = sizeof(arr4)/sizeof(arr4[0]);
    for (int i = 0; i < n; i++)
    {
        printf("%d ", arr4[i]);
    }
    printf("\n");
}

2、二维数组

定义方式

数据类型 数组名[行数][列数]; 例子: int a[3][4]; 创建了一个三行四列的二维数组 二维数组还是连续存储的
取数据:a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2]
a[1][3] …
在这里插入图片描述在这里插入图片描述

二维数组的初始化

二维数组的初始化
void test03()
{
//分段初始化
    int arr[3][4]={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };
    int row = sizeof(arr)/sizeof(arr[0]);
    int col = sizeof(arr[0])/sizeof(arr[0][0]);
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
        {
            printf("%d ", arr[i][j]);
        }
            printf("\n");
    }

//连续初始化
    int arr2[3][4]={1,2,3,4,5,6,7,8,9,10,11,12 };
    row = sizeof(arr2)/sizeof(arr2[0]);
    col = sizeof(arr2[0])/sizeof(arr2[0][0]);
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
    {
        printf("%d ", arr2[i][j]);
    }
        printf("\n");
    }

//综合案例:
    int arr3[3][4] = {{1,2},{3},{4,5}};
    int arr4[3][4] = {1,2,3,4,5};

    printf("%d\n",arr3[1][2]+arr4[1][2]);
}

3、字符数组

字符数组是元素的数据类型为字符类型的数组, 它既具有普通数组的一般性质,又具有某些特殊性质。 字符数组的初始化 逐个字符赋值
用字符串常量

void test04()
{
//需求:定义一个数组 32个元素 每个元素为char 这就是字符数组
//arr作为类型 代表的是数组的总大小
//数组名作为地址 代表的是 数组的首元素地址
    char arr[32] = "";

//获取键盘输入 %s和scanf结合时候 遇到空格 回车 结束输入
    printf("请输入一个字符串:");
    scanf("%s", arr);

    printf("arr=%s\n",arr);

//如果想获取带空格的字符串fgets
//fgets(存放的位置, 获取字符长度的上限, 从哪儿获取字符串);
    char str[32]="";
    fgets(str, sizeof(str), stdin);//stdin标准输入设备(键盘)

    printf("str = ##%s##\n", str);

}

4、字符串函数

1 -- strlen
	#include <string.h>
	size_t strlen(const char *s);
	功能:计算一个字符串的长度
	参数:
		s:保存字符串的首地址,一般为保存字符串的数组的首地址
	返回值:
		字符串的长度
	注意:使用strlen获取字符串的长度,不包括\0
		
2 -- strcpy
	#include <string.h>
	char *strcpy(char *dest, const char *src);
	功能:将src字符串复制到dest里面
	参数:
		dest:目的字符串
		src:原字符串
	返回值:
		同dest
	注意:将src的第一个\0也会复制给dest
		  必须保证strcpy的第一个参数对应的空间足够大,否则会内存溢出
			  
3 -- strcat
	#include <string.h>
	char *strcat(char *dest, const char *src);
	功能:将src追加到dest的后面
	参数:
		dest:目的字符串
		src:原字符串
	返回值:
		同dest
			
	注意:
		strcat将src的数据(包括\0)追加到dest的后面,从dest'\0'的位置开始
		注意:必须保证dest足够大,否则内存溢出 
	
4 -- strcmp
	#include <string.h>
	int strcmp(const char *s1, const char *s2);
	功能:比较两个字符串的内容是否一样
	参数:
		s1,s2:两个字符串
	返回值:
		=0 s1 = s2
		>0 s1 > s2
		<0 s1 < s2
	注意:strcmp比较两个字符串,是一个字符一个字符比较,如果出现不一样的,
		 立即返回,根据对应ascii决定大小            
		 比较到\0的时候就停止

	int strncmp(const char *s1, const char *s2, size_t n);
	功能:比较两个字符串的前n个字节是否一样
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会为你介绍Python中的数组。 在Python中,数组是一种存储元素的数据结构。与列表不同,数组是固定大小的,且元素类型必须相同。 要使用数组,需要先导入array模块。下面是一个创建数组的示例: ```python import array as arr # 创建一个整数类型的数组 a = arr.array('i', [1, 2, 3, 4, 5]) # 打印数组 print(a) ``` 在上面的示例中,我们使用了`array`模块创建了一个整数类型的数组,并初始化了它。要注意的是,第一个参数是一个字符,用于指定数组元素的类型。在本例中,我们使用了`i`,表示整数类型。 除了整数类型之外,还有其他类型可以使用,如`f`表示浮点数,`d`表示双精度浮点数,`b`表示布尔类型等。 在数组中,可以使用索引来访问元素,如下所示: ```python import array as arr # 创建一个整数类型的数组 a = arr.array('i', [1, 2, 3, 4, 5]) # 访问数组中的第一个元素 print(a[0]) # 修改数组中的第二个元素 a[1] = 6 # 打印数组 print(a) ``` 在上面的示例中,我们使用了索引`0`来访问数组中的第一个元素,使用索引`1`来修改数组中的第二个元素。 除了使用索引来访问和修改元素外,还可以使用循环来遍历数组中的所有元素,如下所示: ```python import array as arr # 创建一个整数类型的数组 a = arr.array('i', [1, 2, 3, 4, 5]) # 遍历数组中的所有元素 for i in a: print(i) ``` 在上面的示例中,我们使用了`for`循环来遍历数组中的所有元素,并打印每个元素的值。 这就是Python中数组的基本用法。希望对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值