C语言数组学生笔记|“朝闻道”知识分享大赛
这是我参加朝闻道知识分享大赛的第九篇文章
C语言数组学生笔记
目录
一、数组的概念
数组是一组相同类型元素的集合,这些元素在内存中连续存储。数组可以是一维的,也可以是多维的,常见的是一维数组和二维数组。在C语言中,数组是通过指定类型、数组名和元素个数来创建的。
二、一维数组的创建和初始化
-
一维数组的创建
一维数组的创建语法如下:
type arr_name[常量值];
其中,type指定数组中存放的数据类型,可以是char、short、int、float等,也可以是自定义的类型。arr_name是数组的名字,可以根据需要任意取。[常量值]指定的是数组中元素的个数。 -
数组的初始化
数组的初始化就是给定数组中元素的初始值,可以完全初始化也可以不完全初始化。
-
完全初始化:
int arr[5] = {1, 2, 3, 4, 5};此时,数组中的每个元素都被赋予了初始值。
-
不完全初始化:
int arr[5] = {1, 2, 3};此时,只有前三个元素被初始化,剩下的元素默认初始化为0。即
arr[0] = 1,arr[1] = 2,arr[2] = 3,arr[3] = 0,arr[4] = 0。 -
不指定长度,通过大括号内元素个数确定数组长度:
int arr[] = {1, 2, 3, 4, 5};此时,数组的长度由大括号内的元素个数确定。
-
错误的初始化:
int arr[5] = {1, 2, 3, 4, 5, 6};这是错误的,因为大括号内的元素个数大于数组定义时的长度。
-
三、一维数组的使用
-
数组的下标
C语言规定数组是有下标的,下标从0开始。假设数组有n个元素,最后一个元素的下标是n-1。例如,对于数组
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};,要访问下标为7的元素,可以使用arr[7]。 -
数组元素的打印(遍历)
可以使用for循环来遍历数组并打印每个元素的值。例如:
#include <stdio.h> int main() { int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; for (int i = 0; i < 10; i++) { printf("%d ", arr[i]); } return 0; } -
使用for循环向数组中输入数据
同样,可以使用for循环来向数组中输入数据。例如:
#include <stdio.h> int main() { int arr[10]; for (int i = 0; i < 10; i++) { scanf("%d", &arr[i]); } for (int i = 0; i < 10; i++) { printf("%d ", arr[i]); } return 0; } -
一维数组在内存中的存储
数组在内存中是连续存放的。可以通过打印数组元素的地址来验证这一点。例如:
#include <stdio.h> int main() { int arr[10] = {0}; for (int i = 0; i < 10; i++) { printf("%p\n", &arr[i]); } return 0; }
从输出结果可以看出,随着下标的增长,地址越来越大,且每两个相邻地址的差等于一个整型变量所占的字节数(通常为4个字节)。 -
sizeof计算数组元素个数
在遍历数组的时候,往往需要知道数组元素的个数。这时可以使用
sizeof运算符来计算数组的大小,然后除以单个数组元素的大小来得到元素个数。例如:#include <stdio.h> int main() { int arr[10] = {0}; int len = sizeof(arr) / sizeof(arr[0]); printf("%d", len); return 0; }
四、二维数组的创建和初始化
-
二维数组的创建
二维数组的创建语法如下:
type arr_name[常量值1][常量值2];其中,
type指定数组中存放的数据类型,arr_name是数组的名字,[常量值1]和[常量值2]分别指定数组的行数和列数。 -
二维数组的初始化
-
不完全初始化:
int arr[3][5] = {1, 2};此时,只有第一行的前两个元素被初始化,剩下的元素默认初始化为0。
-
完全初始化:
int arr[3][5] = { {1, 2, 3, 4, 5}, {2, 3, 4, 5, 6}, {3, 4, 5, 6, 7} };此时,数组的每个元素都被赋予了初始值。
-
按照行初始化:
int arr[3][5] = {{1, 2}, {3, 4}, {5}};此时,每一行都被当作一个独立的数组来初始化,未初始化的元素默认初始化为0。
-
行可以省略:
int arr[][5] = {1, 2, 3, 4, 5, 6, 7};此时,可以不指定行数,但一定要指定列数,否则编译器无法确定每行有多少元素。
-
五、二维数组的使用
-
二维数组的访问
二维数组的访问也使用下标形式,通过行号和列号来唯一确定数组中的一个元素。例如,对于数组
int arr[3][5] = {{1, 2, 3, 4, 5}, {2, 3, 4, 5, 6}, {3, 4, 5, 6, 7}};,要访问第二行第四列的元素,可以使用arr[1][3]。 -
使用for循环嵌套向二维数组中赋值和遍历
可以使用嵌套的for循环来向二维数组中赋值和遍历。例如:
#include <stdio.h> int main() { int arr[3][5] = {0}; for (int i = 0; i < 3; i++) { for (int j = 0; j < 5; j++) { scanf("%d", &arr[i][j]); } } for (int i = 0; i < 3; i++) { for (int j = 0; j < 5; j++) { printf("%d ", arr[i][j]); } printf("\n"); } return 0; }
六、字符数组和字符串
-
字符数组
字符数组是由一个一个的字符组成的数组。例如:
char arr1[5] = {'H', 'e'}; char arr2[8] = {'a', 98}; -
字符串
字符串是由双引号引起来的一串字符。字符串的结束标志是一个
\0的转义字符,在计算字符串长度时\0不算作字符串的内容。例如:char arr1[] = "Jack"; char arr2[] = {'J', 'a', 'c', 'k'}; printf("%s\n", arr1); printf("%s\n", arr2); -
字符数组的输入
可以使用
scanf函数从键盘输入字符数组(字符串)。例如:#include <stdio.h> int main() { char name[256] = {0}; printf("please input name:"); scanf("%s", name); printf("
相关推荐
C语言利用结构体数组实现学生成绩管理系统
主要为大家详细介绍了C语言利用结构体数组实现学生成绩管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
蓝桥杯C语言程序设计大赛:从基础到算法的全解析
本章旨在为读者提供C语言程序设计大赛的总体介绍,让参赛者了解比赛的宗旨、结构以及参与者可能面临的挑战。我们将讨论赛事如何鼓励创新,提高编程技能,并激发程序员对解决问题的热情。C语言程序设计大赛是IT行业的一大盛事,它考验并提升了程序员的专业技能。在接下来的章节中,我们将深入探讨C语言的核心语法、高级编程技巧、以及如何将这些技能应用于算法和数据结构中,进一步提高编程能力。
C语言程序设计大赛题目和答案
C语言程序设计大赛题目和答案,对你以后的开发很有帮助
C语言利用结构体数组实现学生成绩管理系统.doc
C语言利用结构体数组实现学生成绩管理系统.doc
全国C语言程序设计大赛题目的程序
第一届全国软件专业人才设计与开发大赛试题C语言试卷和程序


