一、一维数组

1.数组的创建 

数组是一组相同类型的集合。

数组的创建方式:

type_t   arr_name   [contest_n];

//type_t是指数组的元素类型
//const_n是一个常量表达式,用来指数组的大小

介绍一下strlen和sizeof的区别

  • strlen和sizeof没什么关联
  • strlen是求字符串长度的,只能根据字符串求长度,需要用引头文件
  • sizeof计算变量、数组、类型的大小,单位是字节(操作符)

请看代码:

#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[] = "abc";\\字符串后还有一个\0也占一个字节
	char arr2[] = {'a','b','c'};
	printf("%d\n", sizeof(arr1));//4
	printf("%d\n", sizeof(arr2));//3
	printf("%d\n", strlen(arr1));//3
	printf("%d\n", strlen(arr2));//随机值 arr2后没有\0
}

2.一维数组的访问和使用

对于数组的使用,我们可以使用下标引用操作符[],也就是数组访问的操作符

请看代码:

#include<stdio.h>
#include<string.h>
int main()
{
	char arr[] = "abcdef";
	int i = 0;
	for (i = 0; i <strlen(arr); i++)
	{
		printf("%c ", arr[i]);

	}
	return 0;

小结:

  • 数组是使用下标来访问的,下标是从0开始的
  • 数组的大小可以通过计算得到
int arr[10];
int sz=sizof(arr)/sizeof(arr[0]);

3.一维数组在内存中的储存

#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",&arr[i]);
  }   
}

注:%p是取地址符号

结论:随着数组下标的增加,元素的地址,也有规律的递增,由此可得出:数组在内存中是连续存放的。

二、二维数组

1.数组的创建

int arr[3][4];
char arr[3][4];
double arr[2][4];

2.数组的初始化

int arr[3][4]={1,2,3,4};
int arr[4][2]={{4,5},{3,3}};
int arr[][4]={{1,1},{2,6}};

3.数组的访问

请看代码:

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

4.数组的存储

请看代码:

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