数组是一组有序的数据的集合,数组中元素类型相同,由数组名和下标唯一地确定,数组中数据不仅数据类型相同,而且在计算机内存里连续存放,地址编号最低的存储单元存放数组的起始元素,地址编号最高的存储单元存放数组的最后一个元素
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语言数组快速入门详细讲解
- ubuntu下C/C++获取剩余内存 2023-09-18
- C语言qsort()函数的使用方法详解 2023-04-26
- Qt计时器使用方法详解 2023-05-30
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- C语言详解float类型在内存中的存储方式 2023-03-27
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- Easyx实现扫雷游戏 2023-02-06
- C++ 数据结构超详细讲解顺序表 2023-03-25
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09