C语言学习笔记(八)————数组

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

一个学习C语言的小白,有问题评论或私信~
本文主要记录C语言的数组~


提示:以下是本篇文章正文内容,下面案例可供参考

1 一维数组

构造数据类型之一
数组是具有一定顺序关系的若干个变量的集合,组成数组的各个变量称为数组的元素
数组中各元素的数据类型要求相同,用数组名和下标确定,数组可以是一维的,也可
以是多维的。

1.1 一维数组的定义

  1. 所谓一维数组是指只有一个下标的数组,它在计算机的内存中是连续存储的。

  2. C语言中,一维数组的说明一般形式如下:
    <存储类型> <数据类型 > <数组名>[<表达式>];
    例如:int a[6]:
    在这里插入图片描述

     数组名表示内存首地址,是地址常量。sizeof(数组名)是数组占用的总内存空间
     编译时分配连续的内存,内存字节数=数组维数*sizeof(元素数据类型)
    

注意事项:

C语言对数组不作越界检查,使用时候要注意

关于用变量定义数组维数

int  i = 15;
int  a[i];

1.2 一维数组的引用

数组必须先定义,再使用
只能逐个引用数组元素,不能一次引用整个数组
数组元素表示形式: 数组名[下标]
例如:
其中,下标可以是常量或者 整形表达式

int a[10];
 printf("%d",a); //错误写法
for(i=0;i<10;i++)
 printf("%d",a[i]); //正确写法

1.3 一维数组的初始化

  1. 初始化方式:在定义数组的时候,为数组元素赋初值
    int a[5] = {1,2,3,4,5};
  2. 说明
    1. 数组不初始化,其元素值为随机数
    2. 对static数组元素不赋初值,系统会自动赋以0
    3. 只给部分数组元素赋初值

在这里插入图片描述

题目:冒泡排序

它重复的走访过要排序的数列,一次比较两个元素,如果顺序错误就交换。走访数列的工作是重复的进行直到没有再需要交换,也就是说数列已经排序完成。

代码:

#include<stdio.h>

int main()
{
	int arr[] = {7,8,9,11,89,6,4,3},t;
    int n = sizeof(arr)/sizeof(int);
    for(int i = 0 ; i < n-1 ; i++)//拿一个数和另一个数比较最后一个数不用和后一个数比较n-1否则索引会越界
    {
        for(int j = 0 ; j < n-1-i ; j++)//每循环一遍就确定一个最大值就不用和当前最大值再比了
        {
            if(arr[j] > arr[j+1])
            {
                t = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = t;
            }
        }
    }
    for(int i = 0 ; i<n ; i++)
    {
        printf("%d ",arr[i]);
    }
	return 0;
}

2 二维数组

2.1 二维数组的定义

定义方式:(声明时列数不能省略,行数可以)

数据类型  数组名[常量表达式][常量表达式];
例如:
int a[3][4];
float  b[2][5];
int c [2][3][4];

元素个数 = 行数*列数

2.2 二维数组的存放顺序

原因:内存是一维的
二维数组:按行序优先
在这里插入图片描述
二维数组a是由 三个元素组成 a[0]、a[1]、a[2]
每个元素a[i] 由包含2个元素的一维数组组成

3 多维数组

具有两个或者两个以上下标的数组称为多维数组。

int  c[2][3][4]
 c[0][0][0]、c[0][0][1]、c[0][0][2]、c[0][0][3]
 c[0][1][0]、c[0][1][1]、c[0][1][2]、c[0][1][3]
 c[0][2][0]、c[0][2][1]、c[0][2][2]、c[0][2][3]
 c[1][0][0]、c[1][0][1]、c[1][0][2]、c[1][0][3]
 c[1][1][0]、c[1][1][1]、c[1][1][2]、c[1][1][3]

总结

1.所谓一维数组是指只有一个下标的数组,它在计算机的内存中是连续存储的。
2.一维数组初始化了下标可以省略,二维数组的行数可以省略,列数不可以省略。
3.二维数组的内存是一一维的,也是连续的。
4.数组如果没有初始化里面的值是随机的,如果初始化了一部分,后面的数都为0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值