【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语言中有多种实现方法,选择合适的方法取决于具体的应用场景和性能要求。从逐元素比较到使用`memcmp`函数,再到指针优化,每种方法都有其优点和适用范围。在嵌入式系统中,考虑性能和资源限制尤为重要。通过合理选择和优化,可以有效提高程序的运行效率和可靠性。
113 6
|
2月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
75 5
|
2月前
|
存储 程序员 编译器
C 语言数组与指针的深度剖析与应用
在C语言中,数组与指针是核心概念,二者既独立又紧密相连。数组是在连续内存中存储相同类型数据的结构,而指针则存储内存地址,二者结合可在数据处理、函数传参等方面发挥巨大作用。掌握它们的特性和关系,对于优化程序性能、灵活处理数据结构至关重要。
|
2月前
|
存储 C语言 计算机视觉
在C语言中指针数组和数组指针在动态内存分配中的应用
在C语言中,指针数组和数组指针均可用于动态内存分配。指针数组是数组的每个元素都是指针,可用于指向多个动态分配的内存块;数组指针则指向一个数组,可动态分配和管理大型数据结构。两者结合使用,灵活高效地管理内存。
|
2月前
|
存储 NoSQL 编译器
C 语言中指针数组与数组指针的辨析与应用
在C语言中,指针数组和数组指针是两个容易混淆但用途不同的概念。指针数组是一个数组,其元素是指针类型;而数组指针是指向数组的指针。两者在声明、使用及内存布局上各有特点,正确理解它们有助于更高效地编程。
|
2月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
62 4
|
3月前
|
存储 编译器 C语言
【c语言】数组
本文介绍了数组的基本概念及一维和二维数组的创建、初始化、使用方法及其在内存中的存储形式。一维数组通过下标访问元素,支持初始化和动态输入输出。二维数组则通过行和列的下标访问元素,同样支持初始化和动态输入输出。此外,还简要介绍了C99标准中的变长数组,允许在运行时根据变量创建数组,但不能初始化。
67 6
|
3月前
|
存储 人工智能 BI
C语言:数组的分类
C语言中的数组分为一维数组、多维数组和字符串数组。一维数组是最基本的形式,用于存储一系列相同类型的元素;多维数组则可以看作是一维数组的数组,常用于矩阵运算等场景;字符串数组则是以字符为元素的一维数组,专门用于处理文本数据。
126 9
|
3月前
|
存储 算法 C语言
C语言:什么是指针数组,它有什么用
指针数组是C语言中一种特殊的数据结构,每个元素都是一个指针。它用于存储多个内存地址,方便对多个变量或数组进行操作,常用于字符串处理、动态内存分配等场景。
|
3月前
|
存储 C语言
C语言:一维数组的不初始化、部分初始化、完全初始化的不同点
C语言中一维数组的初始化有三种情况:不初始化时,数组元素的值是随机的;部分初始化时,未指定的元素会被自动赋值为0;完全初始化时,所有元素都被赋予了初始值。