【c语言】数组

1.数组的创建
type name [const];
//type指数组的元素类型
//const是一个常量表达式,用来表示数组的大小,但是不可为0;
2.数组的初始化
数组的初始化是指,在创建数组的同时给数组的内容一些合理的初始值(初始化)。

int main()
{
	int arr1[10] = { 1, 2, 3 };
	int arr2[] = { 1, 2, 3, 4, 5 };
	char arr3[5] = { 'a', 'b', 'c' };
	char arr4[5] = { 'a', 98, 'c' };//同上
	char arr5[] = "abcdef";//7个元素
	system("pause");
	return 0;
}

3.一维数组的使用

int main()
{
	int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	int i = 0;
	for (i = 0; i < sizeof(a) / sizeof(*a); i++)
	{
		printf("%d ", a[i]);
	}
	system("pause");
	return 0;
}

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


int  main()
{
	int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	int i = 0;
	for (i = 0; i < sizeof(a) / sizeof(*a); i++)
	{
		printf("%p\n", a[i]);
	}

	system("pause");
	return 0;
}

运行结果为:
在这里插入图片描述
结论:数组在内存中连续存放,并且地址由低到高

在这里插入图片描述

5.一维数组的指针访问

int  main()
{
	int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	int i = 0;
	for (i = 0; i < sizeof(a) / sizeof(*a); i++)
	{
		printf("&a[%d]=%p<==>%p\n", i,&a[i],a+i);
	}

	system("pause");
	return 0;
}

运行结果为:
在这里插入图片描述
结论数组的数组名其实就是数组首元素的地址。
则可使用下面代码打印数组:

int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	int i = 0;
	int *p = &arr[0];
	for (i = 0; i < sizeof(arr) / sizeof(*arr); i++)
    {
		printf("%d\n", *(p+i));
    }
	system("pause");
	return 0;
}

6.二维数组的创建和初始化


int   main()
{
	int arr[3][4] = { 1, 2, 3 };
	system("pause");
	return 0;
}

行可以为空,但是列不能为空。

7.二维数组的使用


int   main()
{
	int arr[3][4] = { 0 };
	int i = 0;
	int j = 0;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			arr[i][j] = i * 4 + j + 1;
		}
	}
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("%d ", arr[i][j]);
		}
	}
	system("pause");
	return 0;
}

8.二维数组在内存中的存储

int   main()
{
	int arr[3][4] = { 0 };
	int i = 0;
	int j = 0;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("&arr[%d][%d]=%p\n ",i,j, &arr[i][j]);
		}
	}
	system("pause");
	return 0;
}

运行结果为:
在这里插入图片描述
通过结果我们可以分析到,其实二维数组在内存中也是连续存放的。如下图所示:

在这里插入图片描述

9.二维数组的指针访问


int   main()
{
	int arr[3][4] = { 0 };
	int i = 0;
	int j = 0;
	int  *p = &arr[0][0];
	for (i = 0; i < sizeof(arr) / sizeof(arr[0][0]); i++)
	{
		*(p + i) = i + 1;
	}
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("%d\n ", arr[i][j]);
		}
	}

	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_41892460/article/details/82774476