C语言从入门到入土(入门篇)(数组p1)
Posted 原来45
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言从入门到入土(入门篇)(数组p1)相关的知识,希望对你有一定的参考价值。
数组
目录
//后面的部分下次接着讲哈!
数组越界
数组作为函数参数
.
数组的应用实例
1
:三子棋
数组的应用实例
2
:扫雷游戏
1. 一维数组的创建和初始化
1.1 数组的创建
数组是一组相同类型元素的集合。
数组的创建方式:
type_t
arr_name
[
const_n
];
//type_t
是指数组的元素类型
//const_n
是一个常量表达式,用来指定数组的大小
数组创建的实例:
//
代码
1
int
arr1
[
10
];
//
代码
2
int
count
=
10
;
int
arr2
[
count
];
//
数组时候可以正常创建?
//
代码
3
char
arr3
[
10
];
float
arr4
[
1
];
double
arr5
[
20
];
注:数组创建,在C99标准之前, [] 中要给一个常量才可以,不能使用变量。在C99标准支持了变长数组的概念。
1.2 数组的初始化
数组的初始化是指,在创建数组的同时给数组的内容一些合理初始值(初始化)。
看代码:
int
arr1
[
10
]
=
{
1
,
2
,
3
};
int
arr2
[]
=
{
1
,
2
,
3
,
4
};
int
arr3
[
5
]
=
{
1
,
2
,
3
,
4
,
5
}
;
char
arr4
[
3
]
=
{
'a'
,
98
,
'c'
};
char
arr5
[]
=
{
'a'
,
'b'
,
'c'
};
char
arr6
[]
=
"abcdef"
;
数组在创建的时候如果想不指定数组的确定的大小就得初始化。数组的元素个数根据初始化的内容来确定。
但是对于下面的代码要区分,内存中如何分配。
char
arr1
[]
=
"abc"
;
char
arr2
[
3
]
=
{
'a'
,
'b'
,
'c'
};
当用双引号包括时,结尾会自动加一个\\0
1.3 一维数组的使用
对于数组的使用我们之前介绍了一个操作符:
[]
,下标引用操作符。它其实就数组访问的操作符。
我们来看代码:
#include <stdio.h>
int
main
()
{
int
arr
[
10
]
=
{
0
};
//
数组的不完全初始化
//计算数组的元素个数
int
sz
=
sizeof
(
arr
)
/
sizeof
(
arr
[
0
]);
//对数组内容赋值
,
数组是使用下标来访问的,下标从
0
开始。所以:
int
i
=
0
;
//
做下标
for
(
i
=
0
;
i
<
10
;
i
++
)
//
这里写
10
,好不好?
{
arr
[
i
]
=
i
;
}
//输出数组的内容
for
(
i
=
0
;
i
<
10
;
++
i
)
{
printf
(
"%d "
,
arr
[
i
]);
}
return
0
;
}
总结
:
1.
数组是使用下标来访问的,下标是从
0
开始。
2.
数组的大小可以通过计算得到。
int
arr
[
10
];
int
sz
=
sizeof
(
arr
)
/
sizeof
(
arr
[
0
]);
1.4 一维数组在内存中的存储
接下来我们探讨数组在内存中的存储。
看代码:
#include <stdio.h>
int
main
()
{
int
arr
[
10
]
=
{
0
};
int
i
=
0
;
int
sz
=
sizeof
(
arr
)
/
sizeof
(
arr
[
0
]);
for
(
i
=
0
;
i
<
sz
;
++
i
)
{
printf
(
"&arr[%d] = %p\\n"
,
i
,
&
arr
[
i
]);
}
return
0
;
}
仔细观察输出的结果,我们知道,随着数组下标的增长,元素的地址,也在有规律的递增。
由此可以得出结论:
数组在内存中是连续存放的。
补充:
再补充一点:这里我们是整型(int)指针,加1跳过4个字节,但是当不是整型指针时,如char型时
也是p+1指向后一个地址,只不过是跳过一个字节,当然后期再讲指针时会细讲哈。
2. 二维数组的创建和初始化
2.1 二维数组的创建
//
数组创建
int
arr
[
3
][
4
];
char
arr
[
3
][
5
];
double
arr
[
2
][
4
];
2.2 二维数组的初始化
//
数组初始化
int
arr
[
3
][
4
]
=
{
1
,
2
,
3
,
4
};
int
arr
[
3
][
4
]
=
{{
1
,
2
},{
4
,
5
}};
int
arr
[][
4
]
=
{{
2
,
3
},{
4
,
5
}};
//
二维数组如果有初始化,行可以省略,列不能省略
2.3 二维数组的使用
二维数组的使用也是通过下标的方式。
2.4 二维数组在内存中的存储
像一维数组一样,这里我们尝试打印二维数组的每个元素。
通过结果我们可以分析到,其实二维数组在内存中也是连续存储的。
最后!今天的内容就完成了哈!!!
要是觉得对你有一点帮助的话,就来一个点赞加关注吧!!你的支持是作者的最大动力!!!
当然,订阅的话更容易了解到第一更新信息哈!
最后的最后,祝我们越来越好!!!
以上是关于C语言从入门到入土(入门篇)(数组p1)的主要内容,如果未能解决你的问题,请参考以下文章
《C语言深度剖析》第五章 内存管理 p1(完结)( C语言从入门到入土(进阶篇)
函数栈帧与可变参数列表 p1可变参数列表(完结)( C语言从入门到入土(进阶篇)
《C语言深度剖析》第四章 指针和数组 p2 C语言从入门到入土(进阶篇)