数组

时间:2022-12-06 11:02:23

创建数组

#include<stdio.h>
#include<string.h>
int main()
{
int arr1[10]={1,2,3};
char arr2[5]={'a',98};
char arr3[5]="ab"
char arr4[]="abcdef"
printf("%d",strlen(arr4));
printf("%d",sizeof(arr4));
return 0;
}

int arr1[10]={1,2,3};//不完全初始化,剩下的元素默认为0;

printf("%d",strlen(arr4));输出结果:6                                                        strlen求字符串长度的,计算”\0“之前的字符个数;只能针对字符串求长度;是库函数;使用需要引用头文件;数组arr4里面:[a b c d e f \0],字符串长度为:6

printf("%d",sizeof(arr4));输出结果:7                                                        sizeof计算变量、数组、类型的大小;单位是字节;是操作符;数组arr4里面:[a b c d e f \0],有7个元素,7*1=7

#include<stdio.h>
#include<string.h>
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a','b','c' };
printf("%d\n", sizeof(arr1));
printf("%d\n", sizeof(arr2));
printf("%d\n", strlen(arr1));
printf("%d\n", strlen(arr2));
return 0;
}

第一输出结果:4,计算数组大小;里面有:a b c \0,四个元素大小

第二输出结果:3,只有:a b c,3个元素大小

第三输出结果:3

第四输出结果:随机数,后面没有”\0“,输出随机数

一维数组;

#include<stdio.h>
int main()
{
char arr[] = "abcdef";//[a][b][c][d][e][f][\0]
int i = 0;
int len = strlen(arr);
for (i = 0; i < len; i++)
{
printf("%c ", arr[i]);
}
return 0;
}

1. 数组是使用下标来访问的,下标是从0开始。

2. 数组的大小可以通过计算得到。

一维数组地址;

#include<stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int sz = sizeof(arr) / sizeof(arr[0]);
int i = 0;
for (i = 0; i < sz; i++)
{
printf("&arr[%d]=%p\n",i,&arr[i]);
}
return 0;
}

输出结果:

数组

仔细观察输出的结果,我们知道,随着数组下标的增长,元素的地址,也在有规律的递增。 由此可以得出结论:数组在内存中是连续存放

数组

二维数值

#include<stdio.h>
int main()
{
int arr[3][4] = { {1,2.3},{4,5} };
int i = 0;
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}

int arr[][4] = {{2,3},{4,5}};//二维数组如果有初始化,行可以省略,列不能省略

二维数组地址

#include<stdio.h>
int main()
{
int arr[3][4] = { {1,2.3},{4,5} };
int i = 0;
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
printf("&arr[%d][%d]=%p\n",i,j,&arr[i][j]);
}
}
return 0;
}

输出结果:

数组

通过结果我们可以分析到,其实二维数组在内存中也是连续存储的。

数组