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]);
}