對數組進行初始化、清空、逆置(函數法)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
//初始化數組
void init(int arr[], int sz, int x)
{
int i = 0;
for (i = 0; i < sz; i++)
{
arr[i] = x;
}
}
//打印數組
void print_f(int arr[], int sz)
{
int i = 0;
for (i = 0; i <sz; i++)
{
printf("%d ", arr[i]);
}
}
//清空數組
void empty(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
arr[i] = 0;
}
}
int main()
{
int arr[10] = { 2, 4, 6, 8, 0, 1, 3, 5, 7, 9 };
int sz = sizeof(arr) / sizeof(arr[0]);
printf("請輸入初始化的值\n");
int n = 0;
scanf("%d", &n);
init(arr, sz, n);//初始化數組
print_f(arr, sz);//打印數組
printf("\n");
printf("以下爲清空數組\n");//自定義清空數組就是把數組的值改爲0
empty(arr, sz);
print_f(arr, sz);
system("pause");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
//逆置數組 兩兩交換
void reverse(int arr[], int sz)//(int *arr,int sz)
{
//防禦性編程
if(NULL==arr)
{
return;//僅僅是爲了讓函數結束,不帶任何返回值
}
int left = 0;
int right = sz - 1;
while (left<right)
{
int temp = 0;
temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
int main()
{
int arr[10] = { 2, 4, 6, 8, 0, 1, 3, 5, 7, 9 };
int sz = sizeof(arr) / sizeof(arr[0]);
printf("以下爲數組逆置\n");
reverse(arr, sz);
print_f(arr, sz);
system("pause");
return 0;
}
數組的逆置的核心就是兩兩交換
說明
1.數組傳參 數組名其實傳遞的是首元素的地址
所以形參的必須是指針。 int arr[] 它的實質就是一個指針。
2。int arr[] 在32位平臺上其實是4個字節
64位8個字節
如果在函數內部求size of
int sz = sizeof(arr) / sizeof(arr[0]);
4/4=1
因此字節長度就是1
重要結論
函數內部不能求取參數部分的數組元素個數