C 程序:使用动态内存分配查找两个一维数组的和


2022年3月12日, 学习 eTutorial
2951

要使用动态内存分配查找数组的和,我们需要了解其属性。

什么是动态内存分配?

动态内存分配定义为在运行时使用动态内存分配函数从堆中动态分配内存。

例如,如果要在 C 程序中使用数组,我们必须首先声明数组的大小。但是,如果这里声明的数组不足以容纳数据,在这种情况下,我们在运行时动态分配内存。有四个库函数用于动态分配内存。它们是

  1. malloc()
  2. calloc()
  3. free()
  4. realloc()

如何在 C 程序中使用动态内存分配查找两个一维数组的和?

在这里,我们必须使用动态内存分配创建两个数组,并计算数组中元素的和,并将其存储在另一个动态数组中。

在此 C 程序中,我们使用三个数组 a、b 和 c,其中数组 ab 包含要添加的用户输入元素列表。现在,我们使用 for 循环添加 数组 a数组 b 的每个元素,并将 存储在 数组 c 中。然后,我们将使用 for loop 显示 数组 c 作为结果。

算法

第一步: 包含头文件,以便在C程序中使用内置函数。

步骤 2: 声明 int 类型的变量 i, n, *a, *b, *c

步骤 3: 将元素数量读入变量 n

步骤 4: 使用 malloc() 函数为 a、b、c 分配空间。

步骤 5: 使用 for loop 读取第一个数组的元素并将其保存到位置 a+i

步骤 6: 使用 for loop 读取第二个数组的元素并将其保存到位置 b+i

步骤 7: 通过使用 for loop 计算数组 ab 的和,例如 *(c+i) = *(a+i) + *(b+i)

步骤 8: 使用 for loopprintf 函数显示结果数组 *(c+i)


要使用动态内存分配查找数组的和,我们需要了解 C 编程中的以下主题,请参考它们以获得更好的理解

C 语言源代码

                                          #include <stdio.h>
#include <stdlib.h>

void main() {
  int i, n;
  int * a, * b, * c;
  printf("How many Elements in each array...\n");
  scanf("%d", & n);
  a = (int * ) malloc(n * sizeof(int));
  b = (int * ) malloc(n * sizeof(int));
  c = (int * ) malloc(n * sizeof(int));
  printf("Enter Elements of First List\n");
  for (i = 0; i < n; i++) {
    scanf("%d", a + i);
  }
  printf("Enter Elements of Second List\n");
  for (i = 0; i < n; i++) {
    scanf("%d", b + i);
  }
  for (i = 0; i < n; i++) {
    *(c + i) = * (a + i) + * (b + i);
  }
  printf("Resultant List is\n");
  for (i = 0; i < n; i++) {
    printf("%d\n", *(c + i));
  }
} /* End of main() */
                                      

输出

How many Elements in each array...
4

Enter Elements of First List
1
2
3
4

Enter Elements of Second List
6
7
8
9

Resultant List is
7
9
11
13