C++数组(二维数组)

1、数组定义时可以不初始化。
char arr[5]; 5个char(整数)型的数据构成的数组// 定义了一个长度为 5 的 char 型数组,不指定初始值

注意:

int arr[5];
数组未初始化,所以每个元素的值都是乱七八糟的值(随机值),arr[0]+arr[1]的值随机

arr[0] 的值是22, 后面的元素的值都是0

2、初试化可赋值为全0

char arr[5] = { 0 };则所有元素的值都是 0

3、元素的下标从 0 开始计算,数组打印不像Python中直接通过打印数组名实现

错误,不用用此方法,如果要打印数组一定是用for循环来打印

4、用 sizeof 取得数组的大小
数组的大小由元素的类型和元素的个数共同决定。
int arr[100];
int size = sizeof(arr); // 大小为 100*4

数组作为形参(加*)

数组作为形参传入时,传入的是数组的首地址

int* arr,加*号后再传入,然后只需要for循环处理数组中的元素即可,不用多考虑*

int find_min(int* arr, int size)
{
	int min = arr[0];
	for (int i = 1; i < size; i++)
	{
		if (arr[i] < min)
		{
			min = arr[i];
		}
	}
	return min;
}

二维数组

1、定义:

int array[4][4];
array[2][3] = 128; // 对坐标(3,4)位置进行赋值

下标依然是从0开始

2二维数组的初始化

使用多个大括号

数组释放

打印内容不确定

返回“字符串常量的指针”和“返回数组名”的区别:

返回静态数据区的地址,函数调用完成内部p数组被释放了,所以返回的地址指向的内容不确定

返回栈内存(动态数据区)的地址

特殊说明:如果定义成char* p =”hello world”;返回常量区地址是可以得到正常打印的

 

编程:

自己思路:

	int arr[11] = { 12, 8, 99, 28, 19, 23, 98, 12, 34, 48, 98 };
	int count = 0;
	for (int i = 0;i <= 10;i++)
	{
		printf("%2d",arr[i]);
		count++;
		if (count == 4)
		{
			printf("\n");
			count = 0;	//清零容易漏掉
		}

		else
			printf(" ");
	}

这里不需要定义count变量,每到四个数就打印换行,否则打印数组元素+空格

另外注意要求的输出格式,右对齐使用%2d

	int arr[11] = { 12, 8, 99, 28, 19, 23, 98, 12, 34, 48, 98 };
	for (int i = 0; i < 11; i++)
	{
		if (i % 4 == 0&&i>0)//i>0的目的避免第一行就打印出一个空格
		{
			printf("\n"); // 每4个数一行
		}

		printf("%2d ", arr[i]);
	}

猜你喜欢

转载自blog.csdn.net/qq_20386411/article/details/88963269