目录
文章目录
前言
一、一维数组的创建和初始化
1.数组的创建
2.数组的初始化
3.一维数组的使用
4.一维数组在内存中的存储
二、二维数组的创建和初始化
1.二维数组的创建
2.二维数组的初始化
3.二维数组的使用
4.二维数组在内存中的存储
三、数组越界
四、数组作为函数参数
总结
文章目录
- 前言
- 一、pandas是什么?
- 二、使用步骤
- 1.引入库
- 2.读入数据
- 总结
- 1.引入库
- 2.读入数据
前言
有关于C语言中数组内容的详解
一、一维数组的创建和初始化
1.数组的创建
数组是一组相同类型元素的集合
数组的创建方式:
type_t arr_name [const_n]; //type_t 是指数组的元素类型 //const_n 是一个常量表达式,用来指定数组的大小
注:数组创建,在C99标准前,[ ]中要给一个常量才可以,不能使用变量。在C99标准支持了变长数组的概念。
2.数组的初始化
创建的同时给一些初始值叫初始化
int arr1[5]={1,2,3,4,5}; int arr2[5]={1,2,3}; //不完全初始化,剩余的元素默认初始为0 int arr3[]={1,2,3}; //不指明数组中元素个数的时候,默认为初始化的元素个数 int arr4[3]={'a',98,'c'}; //98指b的AC char arr5[]={'a','b','c'}; //该数组有三个元素,大小为3个字节,用strlen函数来求字节长度时输出随机值 char arr6[]={"abc"}; //该数组有四个元素,大小为4个字节,用strlen函数来求字节长度为3
strlen:
-
是一个库函数
-
计算的是字符串的长度,并且只能针对字符串
-
关注的字符串中是否有 ,计算的是 之前的字符个数
sizeof:
-
是一个操作符(运算符)
-
sizeof是用来计算变量所占内存空间大小的,任何类型都是可以使用
-
只关注空间大小,不在乎内存中是否存在
3.一维数组的使用
下标引用操作符:[] ,是数组访问的操作符。
总结:
-
数组是使用下标来访问的,下标从0开始。
-
数组的大小可以通过计算得到。
int arr[10]; int sz = sizeof(arr)/sizeof(arr[0]);
4.一维数组在内存中的存储
-
一维数组在内存是连续存放的
-
数组随着下标的增长,地址是由低到高变化的
-
用指针P指向数组 p+i 表示arr[i]的地址
二、二维数组的创建和初始化
1.二维数组的创建
int arr[3][4];
char arr[3][5];
2.二维数组的初始化
int arr[3][4]={1,2,3,4,5,6}; //先按行赋值,不够补0
int arr[3][4] = {{1,2},{4,5}}; //把每一行看成一维数组
int arr[][4] = {{2,3},{4,5}}; //二维数组如果有初始化,行可以省略,列不能省略
3.二维数组的使用
-
二维数组的使用也是通过下标的方式。
4.二维数组在内存中的存储
-
二维数组在内存依然是连续存放的。
-
第一行的数组名叫arr[0]。
三、数组越界
-
所以数组的下标如果小于
0
,或者大于
n-1
,就是数组越界访问了,超出了数组合法空间的访问。
-
C
语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着程序就
是正确的。
-
二维数组的行和列也可能存在越界。
四、数组作为函数参数
-
数组名是首元素地址。
一维数组在内存是连续存放的
数组随着下标的增长,地址是由低到高变化的
用指针P指向数组 p+i 表示arr[i]的地址
1.二维数组的创建
int arr[3][4];
char arr[3][5];
2.二维数组的初始化
int arr[3][4]={1,2,3,4,5,6}; //先按行赋值,不够补0
int arr[3][4] = {{1,2},{4,5}}; //把每一行看成一维数组
int arr[][4] = {{2,3},{4,5}}; //二维数组如果有初始化,行可以省略,列不能省略
3.二维数组的使用
-
二维数组的使用也是通过下标的方式。
4.二维数组在内存中的存储
-
二维数组在内存依然是连续存放的。
-
第一行的数组名叫arr[0]。
三、数组越界
-
所以数组的下标如果小于
0
,或者大于
n-1
,就是数组越界访问了,超出了数组合法空间的访问。
-
C
语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着程序就
是正确的。
-
二维数组的行和列也可能存在越界。
四、数组作为函数参数
-
数组名是首元素地址。
int arr[3][4]={1,2,3,4,5,6}; //先按行赋值,不够补0 int arr[3][4] = {{1,2},{4,5}}; //把每一行看成一维数组 int arr[][4] = {{2,3},{4,5}}; //二维数组如果有初始化,行可以省略,列不能省略
3.二维数组的使用
-
二维数组的使用也是通过下标的方式。
4.二维数组在内存中的存储
-
二维数组在内存依然是连续存放的。
-
第一行的数组名叫arr[0]。
三、数组越界
-
所以数组的下标如果小于
0
,或者大于
n-1
,就是数组越界访问了,超出了数组合法空间的访问。
-
C
语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着程序就
是正确的。
-
二维数组的行和列也可能存在越界。
四、数组作为函数参数
-
数组名是首元素地址。
二维数组的使用也是通过下标的方式。
-
二维数组在内存依然是连续存放的。
-
第一行的数组名叫arr[0]。
三、数组越界
-
所以数组的下标如果小于
0
,或者大于
n-1
,就是数组越界访问了,超出了数组合法空间的访问。
-
C
语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着程序就
是正确的。
-
二维数组的行和列也可能存在越界。
四、数组作为函数参数
-
数组名是首元素地址。
-
数组名是首元素地址。
例外:1. sizeof内部单独放一个数组名,数组名表示整个数组,计算整个地址的大小,单位是字节。
2. &数组名,数组名表示整个数组,取出的是整个数组的地址。
-
用sizeof求元素个数的时候,要在函数外部求,在内部求不到元素个数
总结
以上就是今天要讲的内容,本文仅仅简单介绍了数组的使用,而数组可以让我们很方便的使用数据,学完本章即可利用数组自己做出小游戏扫雷和井字棋了,快去尝试一下吧,可以参考我博客中的扫雷和三子棋,多多指教。



