C语言数组快速入门详细讲解

 更新时间:2022年05月12日 14:37:44   作者:珠江上  
数组是一组有序的数据的集合,数组中元素类型相同,由数组名和下标唯一地确定,数组中数据不仅数据类型相同,而且在计算机内存里连续存放,地址编号最低的存储单元存放数组的起始元素,地址编号最高的存储单元存放数组的最后一个元素

1.一维数组

数组的定义: 数组是一组相同类型元素的集合

a.一维数组的创建

数组的创建格式为: 数组的类型 数组名[ 常量表达式] ;

关于数组创建易错点:

b.一维数组的初始化

类似于给整型变量初始化的过程:

int a=2; int b=5; int c=66;

关于数组初始化易错点:

字符串的结束标志是 \0

特别注意:数组长度和字符串长度不是一个东西

#include <stdio.h>
#include <string.h>
int main()
{
	int arr1[3] = { 1,2,3 };
	//数组有1、2、3这三个元素
	int arr2[4] = { 1,2,3 };
	//数组有1、2、3、0这四个元素
	int arr3[4] = { 0 };
	//数组有0、0、0、0这四个元素
	char ch4[5] = "dat";
	//数组有d、a、t、\0、0这五个元素
	char ch5[] = "dat";
	//数组有d、a、t、\0这四个元素
	char arr6[] = "abc";
	//数组有a、b、c、\0四个元素,该数组长度为3,字符串长度为3
	char arr7[] = {'a','b','c'};
	//数组有a、b、c三个元素,该数组长度为3,字符串长度为随机值
	printf("%d\n", strlen(arr6));//3
	printf("%d\n", strlen(arr7));//随机值
	printf("%s\n", arr6);//得abc
	printf("%s\n", arr7);//abc乱七八糟
	return 0;
}

c.一维数组的使用

访问数组中的某个元素用到[ ]下标引用操作符, 数组是使用下标来访问的,下标是从0开始

计算数组的大小如下代码:

#include <stdio.h>
int main()
{
    int arr[10] = {0};
    int sz = sizeof(arr) / sizeof(arr[0]);
    printf("则数组的大小为%d\n",sz);
    return 0;
}

d.一维数组在内存中的存储

一维数组在内存中连续存放

数组的存放地址由低到高变化,看代码:

2.二维数组

一维数组长这样:

int arr [ 10 ]= { 0 } ;

二维数组长这样:

int arr [ 3] [4 ]= { {1,2}, {3,4}} ;

a.二维数组的创建

int arr1 [ 3 ] [ 4 ] ; 三行四列

char arr2 [ 4] [ 4 ] ; 四行四列

float arr3 [ 3 ] [ 6] ; 三行六列

特别注意:二维数组中,行可以省略,如:

int arr [ ] [ 4 ] ;

b.二维数组的初始化

int arr1 [ 3 ] [ 4 ] = {1,2,3,4,5};

第一行: 1 2 3 4

第二行: 5 0 0 0

第三行: 0 0 0 0

char arr2 [ 4] [ 4 ] ={ {1,2} , {3,4} } ;

第一行: 1 2 0 0

第二行: 3 4 0 0

第三行: 0 0 0 0

第四行: 0 0 0 0

float arr3 [ 3 ] [ 6] = { {1,2} , {3,4} , {5,6,0,2} } ;

第一行: 1 2 0 0 0 0

第二行: 3 4 0 0 0 0

第三行: 5 6 0 2 0 0

特别注意:未完全初始化的部分都是0

c.二维数组的使用

和一维数组相同,二维数组的使用也是通过下标的方式实现, 行和列的顺序,以及下标的的顺序不能错哦

d.二维数组在内存中的存储

通过下图,我们发现:

二维数组在内存中也是连续存储的

数组的存放地址也是由低到高变化

3.数组越界

数组的下标是有限制的

规定:数组下标从0开始,最后一个元素下标为n-1

看以下代码:

i=3;则有0 1 2 3 四个下标就有四个元素,

j=4;则有0 1 2 3 4 五个下标就有五个元素

4.数组作为函数参数

这里用个冒泡函数:将元素排序,来举例

这个代码通过调试,才能得出效果

#include <stdio.h>
 
void bubble_sort(int arr[], int sz)
{
    int i = 0;
    for (i = 0; i < sz - 1; i++)
    {
        int j = 0;
        for (j = 0; j < sz - i - 1; j++)
        {
            if (arr[j] > arr[i])
            {
                int tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        }
    }
}
int main()
{
    int arr[] = { 1,3,6,8,2,9 };
    int sz = sizeof(arr) / sizeof(arr[0]);
    bubble_sort(arr, sz);
    return 0;
}

5.数组名

数组名就是首元素的地址(俩个例外)

1.sizeof(数组名)计算的是数组的大小

2.&数组名,取出的是数组的地址

到此这篇关于C语言数组快速入门详细讲解的文章就介绍到这了,更多相关C语言数组内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言实现选择排序、冒泡排序和快速排序的代码示例

    C语言实现选择排序、冒泡排序和快速排序的代码示例

    这篇文章主要介绍了C++中实现选择排序、冒泡排序和快速排序的代码示例,例子带有执行时间统计还可以简单看一下效率对比,需要的朋友可以参考下
    2016-04-04
  • C++ Qt开发之PushButton按钮组件的使用详解

    C++ Qt开发之PushButton按钮组件的使用详解

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,本文将重点介绍QPushButton按钮组件的常用方法及灵活运用,感兴趣的小伙伴可以学习一下
    2023-12-12
  • C 语言基础教程(我的C之旅开始了)[五]

    C 语言基础教程(我的C之旅开始了)[五]

    C 语言基础教程(我的C之旅开始了)[五]...
    2007-02-02
  • 深入解析Radix Sort基数排序算法思想及C语言实现示例

    深入解析Radix Sort基数排序算法思想及C语言实现示例

    基数排序和桶排序、计数排序共同是三种最常用的线性排序算法,这里我们就来深入解析Radix Sort基数排序算法思想及C语言实现示例,需要的朋友可以参考下
    2016-07-07
  • C\C++ 获取当前路径实例详解

    C\C++ 获取当前路径实例详解

    这篇文章主要介绍了C\C++ 获取当前路径实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • C语言struct结构体介绍

    C语言struct结构体介绍

    C语言中,结构体类型属于一种构造类型(其他的构造类型还有:数组类型,联合类型),下面这篇文章主要给大家介绍了关于C语言结构体(struct)的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • 基于C语言实现简单的扫雷游戏

    基于C语言实现简单的扫雷游戏

    这篇文章主要为大家详细介绍了基于C语言实现简单的扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • C++中按引用传递参数的好处有哪些

    C++中按引用传递参数的好处有哪些

    这篇文章主要介绍了C++中按引用传递参数的好处有哪些,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • QT已有项目导入工程时注意事项图文详解

    QT已有项目导入工程时注意事项图文详解

    QT开发这几年大大小小项目做了不少,花了点时间对知识点总结整合了一部分,下面这篇文章主要给大家介绍了关于QT已有项目导入工程时注意事项的相关资料,需要的朋友可以参考下
    2023-11-11
  • Qt读写CSV文件的三种方式及优劣对比

    Qt读写CSV文件的三种方式及优劣对比

    最近的要用到CSV格式的数据,所以这篇文章讲述一下QT读取CSV文件数据,下面这篇文章主要给大家介绍了关于Qt读写CSV文件的三种方式及优劣对比的相关资料,需要的朋友可以参考下
    2023-11-11

最新评论