关于作者:
2019NOIP退役成员,学习c语言已有多年经验, 更懂得考试的题目,和初学者学习时所遇到的问题华为云享专家,以及CSDN的新星创作者,有写博客的一定能力
关于本栏目
本栏目的宗旨是带你入门c语言,作者打算用题海+c语言的概念来完成本栏目,
适用人群: 面向广大的编程爱好者和大学生来进行创作学完本栏后你能达到的水平:计算机二级水平左右,入门c语言学习
题目:主要来源于网络和c语言的入门算法题目
# 写在前面的话(第四天)
今天是各位彦祖学习c语言的第四天,记住我们的宗旨:努力去做,让一切交给时间来评判!
今天我们要学习的是数组,希望各位彦祖能完成配套的简单练习题目。
数组
C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。
数组在内存中
数组的声明并不是声明一个个单独的变量,比如 runoob0、runoob1、...、runoob99,而是声明一个数组变量,比如 runoob,然后使用 runoob[0]、runoob[1]、...、runoob[99] 来代表一个个单独的变量。
所有的数组都是由连续的内存位置组成。
数组的定义
首先是命名,数组的命名与上一讲中的变量名命名相同
其次是长度,数组的长度必须是一个整型变量
int a[12];错误:
int s = 10;
int a[s];
不能用变量来定义数组长度
数组的基本使用方法:
- 直接指定初始值
int arr[5] = {1,2,3,4,5};
- 不指定初始值
int arr[5];
- 指定一部分初始值
int arr[5] = {1,2,3};
- 只有初始值没有长度
int arr[] = {1,2,3,4,5};
- 初始值为0
int arr[5]={0};
那么如何进行访问呢?
#include<stdio.h>
int main()
{
int arr[5] = { 1,2,3,4,5 };
printf("%d", arr[0]);//输出第一个元素
printf("%d", arr[1]);//输出第二个元素
return 0;
}
下面我们来看如何取得数组的大小,在c中我们用sizeof来获取数组所占的内存大小
#include<stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5 };
printf("%d", sizeof(arr));
return 0;
}
输出20
那么我们想知道这个数组中有多少个元素,应该怎么做呢?上一讲中我们说,一个int为4个字节,所以sizeof(arr)/4及为所输出的元素个数
#include<stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5 };
printf("%d", sizeof(arr)/4);
return 0;
}
数组中所需要注意的地方
初始化列表
初始化列表的长度不能大于数组长度int arr[2]={1,2,3,4};//错误
越界访问
何为越界呢?假如长度为n的数组,要访问除【0,n-1】以外的数据就是数组越界
#include<stdio.h>
int main()
{
int arr[5];
arr[6] = 6;//越界,错的不能这样写
printf("%d", arr[6]);
return 0;
}
上述代码编译器无法发现错误,但是有可能会在运行或你意想不到的地方出错,对于初学者来说常见的是编译错误,将来可能更多的是运行错误
只有在初始化时才能使用初始化列表
#include<stdio.h>
int main()
{
int arr[5];
arr = { 1,2,3,4,5 };//错误
return 0;
}
正确的写法:
arr[0] = 0;
arr[1] = 1;
//单个定义