コンテンツ
1.1次元配列の作成と初期化
作成:例として整数配列を取り上げます
int arr[5] = {
1,2,3,4,5 };
形状は次のようarr
になります。作成された配列名
[5]
の場合、内部の配列は配列の要素数であり、配列
int
の要素の型が整数型であることを示します。
初期化:
int arr[5] = {
1,2,3,4,5 };
这种是把数组里面的元素全部初始化,并且指定了数组元素的个数
int arr1[] = {
1,2,3,4,5 };
这种没有指定数组的个数,数组的元素的个数根据后面大括号里面的个数确定
int arr2[5] = {
1,2 };
这种指定了数组元素的大小却没有完全初始,
前面两个元素分别被初始化为1,2后面3个元素都被默认初始化为0
文字配列
char arr[]="maoleshua";
这是10个元素,因为字符串以\0为结尾
char arr[]={
'm','l','n','b'};
这是4个元素
考える
int n=5;
int arr[n]={
1,2,3,4,5};
上記のコードは正しいですか?C99標準の前は、このように書くのは間違っていました([]は整数定数しか含めることができません)が、その後、可変長配列の概念があります。これは正しいことです。
ただし、vsコンパイラは当面C99標準をサポートしていません。だからそれは間違っています。
2.1次元配列の使用
使いやすい
int main()
{
int arr[5] = {
1,2 };
int i = 0;
for (i = 0; i < 5; i++)
{
arr[i] = i;
}
for (i = 0; i < 5; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
3.1次元配列のメモリへの保存
配列はメモリに連続して格納されます。
上記のコードについては、
そのメモリアドレスを確認してください
4.2次元配列の作成と初期化
2次元配列は次のようint arr[][]
になります。最初の[]は行を表し、2番目の[]は列を表します。
初期化:
int arr1[2][2] = {
1,2,3 ,4};
全部初始化
int arr2[2][2] = {
{
1,2},{
3 ,4} };
和上面的一样,每个大括号表示一行
int arr3[2][2] = {
{
1},{
2,3 } };
这种第一行没有完全初始化,没有完全初始化的被默认初始化为0
int arr4[][2] = {
1,2,3 ,4};
这种省略行的表示是正确的,行数由后面的初始化的确定
int arr5[2][] = {
1,2,3,4 };
这种初始化是错误的,不能省略列
int arr6[2][2] = {
1 };
非完全初始化,其余元素都为0
5.2次元配列の使用
使い方はとても簡単です
int arr[2][2] = {
1,2,3 ,4};
int i, j;
for(i=0;i<2;i++)
{
for (j=0;j<2;j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
6.2次元配列のメモリへの保存
2次元配列もメモリに連続して格納されます
7.範囲外の配列
配列の範囲外とは、配列外のメモリにアクセスすることを意味します。
例として1次元配列を取り上げます。
int arr[5] = {
1,2 };
int i = 0;
for (i = 0; i < 6; i++)这里当i==5,访问数组中第6个元素,为越界访问
{
arr[i] = i;
}
8.関数パラメーターとしての配列
1次元配列の配列名は、最初の要素のアドレスを表します。2次元配列の配列。配列全体のサイズをバイト単位で計算します。の要素のアドレスを行
最初の名
void f(int* arr)
{
int st = sizeof(arr) / sizeof(arr[0]);
大家可能以为st的值为5,但是为1,
因为这个arr是指针变量,32位平台上占4个字节
}
int main()
{
int arr[5] = {
1,2,3 ,4 };
f(arr);
return 0;
}
読者は注意を払う必要があります
9.グループを手で教えます
QQグループ720429262