C语言一维数组的创建、初始化、清空、逆置、访问、存储 您所在的位置:网站首页 c语言清空输出 C语言一维数组的创建、初始化、清空、逆置、访问、存储

C语言一维数组的创建、初始化、清空、逆置、访问、存储

2023-07-25 17:34| 来源: 网络整理| 查看: 265

一维数组的创建和初始化 创建: int arr[10]; 数组的初始化有三种方法: 1 直接初始化 //代码1 int arr[10] = { 0 }; //代码2 int arr[10] = { 0,1,2,3,4,5,6,7,8,9 }; 2 for循环初始化 void InitArr(int arr[], int sz) { for (int i = 0; i < sz; i++) arr[i] = i; }

注:上述代码中的sz是在主函数中算出来,然后传过来的,它表示数组中元素的个数,该参数不能在初始化函数中计算,因为数组穿过去的是首元素的地址,假如在初始化函数中计算,结果为1,而不是数组中元素的个数。

3 memset()函数初始化 void InitArr(int arr[], int sz) { memset(arr, 0, 40); }

注:该函数的原型为

void *memset(void *ptr, int value, size_t num)

地址ptr开始的num个字节赋值value,是逐个字节赋值,ptr开始的num个字节中的每个字节都赋值为value。后面的40为数组arr的字节。

若ptr指向char型地址,value可为任意字符值;若ptr指向非char型,如int型地址,要想赋值正确,value的值只能是-1或0,因为-1和0转化成二进制后每一位都是一样的; 假如需要赋值0~9,只能使用for循环。 一维数组的清空

数组的清空救比较简单了,就是把每个元素都变为0,可以变相理解为初始化为0。

void EmptyArr(int arr[]) { memset(arr, 0, 40); } 一维数组的逆置 将数组的首尾元素换位置即可 void ReverseArr(int arr[], int sz) { for (int i = 0; i < sz / 2; i++) { int tmp = arr[i]; arr[i] = arr[sz - 1 - i]; arr[sz - 1 - i] = tmp; } }

注: 上述方法中需要注意的是循环到数组一半长度就必须终止,要不然就又换回去了,和原数组一样。

一维数组的访问 1 直接访问 void PrintArr(int arr[], int sz) { for (int i = 0; i < sz; i++) printf("%d ", arr[i]); } 2 通过指针访问 void PrintArr(int arr[], int sz) { int *p = arr; for (int i = 0; i < sz; i++) printf("%d ", *(p+i)); }

注:上述代码将arr数组首个元素的地址赋给指针变量p,p+i表示第i个元素的地址,然后解引用*(p+i),就得到了第i个元素的数值。

一维数组的存储 #include int main() { int arr[10] = { 0 }; for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) { printf("&arr[%d] = %p\n", i, &arr[i]); } return 0; }

注:int类型占四个字节,所以一维数组在内存中是连续存放的。

主函数 int main() { int arr[10] = { 0 }; int sz = sizeof(arr) / sizeof(arr[0]); InitArr(arr, sz); PrintArr(arr, sz); printf("\n"); ReverseArr(arr, sz); PrintArr(arr, sz); printf("\n"); return 0; } 附: #include #include #include void InitArr(int arr[], int sz) { for (int i = 0; i < sz; i++) arr[i] = i; } void PrintArr(int arr[], int sz) { int *p = arr; for (int i = 0; i < sz; i++) printf("%d ", *(p+i)); } void EmptyArr(int arr[], int sz) { memset(arr, -1, 40); } void ReverseArr(int arr[], int sz) { for (int i = 0; i < sz / 2; i++) { int tmp = arr[i]; arr[i] = arr[sz - 1 - i]; arr[sz - 1 - i] = tmp; } } int main() { int arr[10] = { 0 }; int sz = sizeof(arr) / sizeof(arr[0]); InitArr(arr, sz); PrintArr(arr, sz); printf("\n"); ReverseArr(arr, sz); PrintArr(arr, sz); printf("\n"); return 0; }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有