【C语言初学必看】五分钟拿下数组

简介: 【C语言初学必看】五分钟拿下数组

前言:

在校大一学生,想用最简单的话来解释晦涩难懂的知识,让学习编程不再枯燥,这是我开始写博客的第三天,很多东西也是需要我学习的,请诸路大神予以指正,蟹蟹

1.一维数组:                                                                                        

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

a.一维数组的创建:

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

       

关于数组创建易错点:


b.一维数组的初始化:

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

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

关于数组初始化易错点:

字符串的结束标志是 \0

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

1. #include <stdio.h>
2. #include <string.h>
3. 
4. int main()
5. {
6.  int arr1[3] = { 1,2,3 };
7.  //数组有1、2、3这三个元素
8. 
9.  int arr2[4] = { 1,2,3 };
10.   //数组有1、2、3、0这四个元素
11. 
12.   int arr3[4] = { 0 };
13.   //数组有0、0、0、0这四个元素
14. 
15.   char ch4[5] = "dat";
16.   //数组有d、a、t、\0、0这五个元素
17. 
18.   char ch5[] = "dat";
19.   //数组有d、a、t、\0这四个元素
20. 
21.   char arr6[] = "abc";
22.   //数组有a、b、c、\0四个元素,该数组长度为3,字符串长度为3
23. 
24.   char arr7[] = {'a','b','c'};
25.   //数组有a、b、c三个元素,该数组长度为3,字符串长度为随机值
26. 
27.   printf("%d\n", strlen(arr6));//3
28.   printf("%d\n", strlen(arr7));//随机值
29. 
30.   printf("%s\n", arr6);//得abc
31.   printf("%s\n", arr7);//abc乱七八糟
32. 
33. 
34.   return 0;
35. }

c.一维数组的使用:

访问数组中的某个元素用到[ ]下标引用操作符,

数组是使用下标来访问的,下标是从0开始

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

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

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.数组作为函数参数  :                                                                  

 

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

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

1. #include <stdio.h>
2. 
3. void bubble_sort(int arr[], int sz)
4. {
5.     int i = 0;
6. for (i = 0; i < sz - 1; i++)
7.     {
8.         int j = 0;
9. for (j = 0; j < sz - i - 1; j++)
10.         {
11. if (arr[j] > arr[i])
12.             {
13.                 int tmp = arr[j];
14.                 arr[j] = arr[j + 1];
15.                 arr[j + 1] = tmp;
16.             }
17. 
18.         }
19.     }
20. 
21. }
22. int main()
23. {
24.     int arr[] = { 1,3,6,8,2,9 };
25.     int sz = sizeof(arr) / sizeof(arr[0]);
26.     bubble_sort(arr, sz);
27. 
28. return 0;
29. }

5.数组名:                                                                                      

6

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

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

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


6.做好一件事,最重要的就是 重复 和 坚持                                    

  必行之事,何必问天,一定要加油鸭                                          

如果对您有帮助的话,不要忘记点赞哦,蟹蟹

相关文章
|
1天前
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
|
1天前
|
C语言
【C语言刷题每日一题】一维数组的交换
【C语言刷题每日一题】一维数组的交换
|
1天前
|
存储 C语言
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
【C语言刷题系列】求一个数组中两个元素a和b的和最接近整数m
|
1天前
|
C语言
【C语言】:详解函数指针变量,函数指针数组及转移表
【C语言】:详解函数指针变量,函数指针数组及转移表
8 2
|
1天前
|
C语言
【C语言】:详解指针数组,数组指针及(二维)数组传参(2)
【C语言】:详解指针数组,数组指针及(二维)数组传参(2)
6 1
|
1天前
|
Serverless C语言
【C语言】:对(一维)数组与指针的深入理解(1)
【C语言】:对(一维)数组与指针的深入理解(1)
5 1
|
4天前
|
C语言
C语言----数组----二分查找
C语言----数组----二分查找
TU^
|
12天前
|
存储 编译器 程序员
C语言之数组
C语言之数组
TU^
18 1
|
23小时前
|
C语言
【C语言刷题系列】轮转数组
【C语言刷题系列】轮转数组
|
1天前
|
C语言
【C语言基础篇】数组传参规则详解
【C语言基础篇】数组传参规则详解