一、创建一个整型数组,创建函数,完成对数组:
1、打印数组内全部元素;
2、完成数组内元素逆置;
3、实现初始化数组元素全部为0。
二、重要知识点
1、函数创建、函数返回值;
2、一维数组创建和初始化,一维数组的使用,数组传参;
3、操作符:
sizeof:计算数据类型所占空间大小的单目运算符;
[]:下标引用操作符。
4、元素交换:引入新的变量完成元素交换。
三、对整型数组初始化、打印、逆置
(一)、主函数
首先在主函数中将需要的功能列出。
int main()
{
//创建整型数组并初始化
int arr[] = { 3,7,9,1,6,10,5,8,2,4,11 };
//运用sizeof单目操作符计算数组元素个数
int sz = sizeof(arr)/sizeof(arr[0]);
//打印
print(arr, sz);
//逆置
reverse(arr, sz);
print(arr, sz);
//将数组元素初始化为0
init(arr, sz);
print(arr, sz);
return 0;
}
1、一维数组创建
type_t arr_name [const_n];
type_t表示数组中的元素类型, arr_name为数组的名字,const_n用来指定数组的大小。
注:在C99标准之前,数组的大小必须是常量表达式,在C99之后,数组的大小可以是变量,为了支持变长数组。
int main()
{
int arr1[5];
int arr2[];//需要指定数组的大小
char arr3[5];
char arr3[];//需要指定数组的大小
return 0;
}
2、一维数组的初始化
int main()
{
int arr1[5] = { 1,2,3,4,5 };//完全初始化
int arr1_1[5] = { 1,2,3 };//不完全初始化,剩下的元素默认为0
int arr2[] = {1,2,3,4,5 };//在初始化时可不指定数组的大小
char arr3[5] = {'a','b','c','d','e'};//完全初始化
char arr3_1[5] = { 'a','b','c' }; //不完全初始化,剩下的元素默认为0
printf("%d\n", arr3_1[4]);//打印结果为0
char arr4[] = "abcde";
//注意区分数组长度和字符串长度
//数组长度:数组中元素的个数
//字符串长度:\0之前的元素个数
char arr5[] = "abcdef";
char arr6[] = { 'a','b','c','d','e','f' };
//对于arr5,数组长度为7,字符串长度为6
//对于arr6,数组长度为6.字符串长度未知,因为不确定\0在哪
int a = strlen(arr5);
int b = strlen(arr6);
printf("%d\n", a);//结果为6
printf("%d\n", b);//结果随机
//strlen是一个计算字符串长度的函数,使用时需要引用头文件#include <string.h>,
//不包含\0,即计算\0之前的字符串长度
//strlen是计算字符串长度的函数,不能用来计算整型数组的长度。
return 0;
}
(1)注意区分数组长度和字符串长度
数组长度:数组中元素的个数
字符串长度:\0之前的元素个数
(2)strlen是一个计算字符串长度的函数,使用时需要引用头文件#include <string.h>,不包含\0,即计算\0之前的字符串长度。
strlen是计算字符串长度的函数,不能用来计算整型数组的长度。
(3)sizeof是一个计算数据类型所占空间大小的单目运算符,在计算字符串的空间大小时,包含了结束符\0的位置。
3、一维数组的使用
一维数组在使用时需要用到:[],下标引用操作符
(1)在访问数组时,通过下标进行访问,而下标从0开始,如arr[0],在循环中使用arr[i];
(2)数组的大小可以通过计算得到。
4、数组传参
数组在传参时,使用函数名就可以。数组在传参,函数参数有两种写法:
(1)数组,void function(int arr[]);
(2)指针,void function(int* arr)。
数组名能表示首元素地址,有两个例外:
(1)sizeof(函数名),计算整个数组的大小,sizeof内部单独放一个数组名,数组名表示整个数组;
(2)&数组名,取出的是整个元素的地址,在这里数组名表示整个数组。
除了上述两种情况外,所有的数组名表示数组首元素的地址。
(二)打印数组内全部元素
//打印数组
void print(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
(三)完成数组内元素逆置
//数组元素逆置
void reverse(int arr[], int sz)
{
int left = 0;
int right = sz - 1;
int tmp = 0;
while (left <= right)
{
tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}
(四)实现初始化数组元素全部为0
void init(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
arr[i] = 0;
}
}