小朋友学C语言(20):数组
2017-10-22 11:08
330 查看
一、数组简介
C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。数组的声明并不是声明一个个单独的变量,比如 number0、number1、…、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、…、numbers[99] 来代表一个个单独的变量。数组中的特定元素可以通过索引访问。
所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。
二、动手编写一个简单的数组程序
#include <stdio.h> int main() { int a[5] = {2, 4, 5, 8, 20}; for(int i = 0; i <= 4; i++) { printf("a[%d] = %d\n", i, a[i]); } return 0; }
运行结果:
a[0] = 2 a[1] = 4 a[2] = 5 a[3] = 8 a[4] = 20
分析:
(1)int a[5]; 这是声明了一个数组,数组类型为整型,数组名为a,数组大小为5,表示可以放5个整型元素。
(2)a[5] = {2, 4, 5, 8, 20},这是赋值语句,类比于a = 1。不过通常说成是数组的初始化,而不是给数组赋值。注意,是用大括号把元素包含在内,而不是中括号或小括号。
(3)数组的下标是从0开始的,所以本程序中的五个元素为a[0], a[1], a[2], a[3], a[4],而不是a[1], a[2], a[3], a[4], a[5]。这从for循环也可以看出,for循环是从0增加到4,而不是从1增加到5。如果要获取a[5]或a[6],编译器会报数组越界的错误或者直接取到了0!。
(4)假如数组的大小为size,那么元素的最大下标为size - 1。以本程序为例,大小为5,则最大下标为4,即只能取到a[4]。
(5)如果把在数组声明后直接初始化,类似本程序这样的,可以不用写数组大小,运行效果完全一样。
#include <stdio.h> int main() { int a[] = {2, 4, 5, 8, 20}; for(int i = 0; i <= 4; i++) { printf("a[%d] = %d\n", i, a[i]); } return 0; }
三、逐个给数组元素赋值
#include <stdio.h> int main() { int a[5]; for(int i = 0; i <= 4; i++) { a[i] = 2 * i; printf("a[%d] = %d\n", i, a[i]); } return 0; }
运行结果:
a[0] = 0 a[1] = 2 a[2] = 4 a[3] = 6 a[4] = 8
注意,在声明数组int a[5]的时候,因为不是立即初始化(跟上面的例子不一样),则数组大小(这里为5),不能省略。
四、浮点数数组
#include <stdio.h> int main() { float a[4] = {1.1, 2.2, 3.33, 5.555}; for(int i = 0; i <= 3; i++) { printf("a[%d] = %f\n", i, a[i]); } return 0; }
运行结果:
a[0] = 1.100000 a[1] = 2.200000 a[2] = 3.330000 a[3] = 5.555000
五、字符数组
#include <stdio.h> int main() { char c[] = {'H', 'e', 'l', 'l', 'o', '!'}; for(int i = 0; i < 6; i++) { printf("%c", c[i]); } return 0; }
运行结果:
Hello!
六、如果没有显示写出数组长度,求数组长度
#include <stdio.h> int main() { int a[] = {2, 4, 5, 8 ,20}; printf("Size of int: %ld\n", sizeof(int)); printf("Length of a: %ld\n", sizeof(a)); printf("Size of a: %ld\n", sizeof(a) / sizeof(int)); printf("====================\n"); float b[] = {2.0, 3.2, 5.13, 8.8888,20}; printf("Size of float: %ld\n", sizeof(float)); printf("Length of b: %ld\n", sizeof(b)); printf("Size of b: %ld\n", sizeof(b) / sizeof(float)); printf("====================\n"); double d[] = {2.0, 3.2, 5.13, 8.8888,20}; printf("Size of double: %ld\n", sizeof(double)); printf("Length of d: %ld\n", sizeof(d)); printf("Size of d: %ld\n", sizeof(d) / sizeof(double)); printf("====================\n"); char c[] = {'H', 'e', 'l', 'l', 'o', '!'}; printf("Size of char: %ld\n", sizeof(char)); printf("Length of c: %ld\n", sizeof(c)); int size = sizeof(c) / sizeof(char); printf("Size of c: %d\n", size); for(int i = 0; i < size; i++) { printf("%c", c[i]); } return 0; }
运行结果:
Size of int: 4 Length of a: 20 Size of a: 5 ==================== Size of float: 4 Length of b: 20 Size of b: 5 ==================== Size of double: 8 Length of d: 40 Size of d: 5 ==================== Size of char: 1 Length of c: 6 Size of c: 6 Hello!
分析:
以int a[] = {2, 4, 5, 8 ,20}; 为例:
整型数每个占4字节,所以sizeof(int) = 4字节
数组a包含了5个整型数,计算出a的长度(即有多少个字节)sizeof(a) = 20字节
相除即得到a的大小(即个数)为sizeof(a) / sizeof(int) = 5个元素
七、作业
(1)断点调试第六部分中的程序(2)默写第六部分中的程序
更多内容请关注微信公众号
相关文章推荐
- C语言学习趣事_20_关于数组名与指针的讨论
- leetcode 27. Remove Element(C语言,快速排序思想,剔除数组中与目标值相等的数)20
- C语言学习笔记(20) 数组参数和指针参数分析
- 求出小于或等于lim的所有素数并放在aa数组中, 函数返回所求出的素数的个数。C语言编写【20题】
- C语言的数组-一维(20)
- C语言字符数组的应用
- C语言,数组实现约瑟夫环问题(两种方法)
- 【C语言】比较两个数组中是否有相同的元素
- C语言中用于计算数组长度的函数 “strlen() ”。
- C语言中数组指针的使用
- C语言-求1-20的阶乘的和(函数的递归)
- C语言二位数组的深入理解
- PAT1059 C语言竞赛(20)
- c语言数组和指针
- C语言之指针和数组 1
- C语言之指针、数组和函数
- C语言----数组(一维数组)
- 【一起来学C语言】数组(二)
- 简图记录-C语言总结(二) 指针与数组
- 如何将BASE64编码的证书转换成C语言数组格式