📜  c malloc 数组 - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:13:46.109000             🧑  作者: Mango

C语言中的动态内存分配

在C语言中,动态内存分配是很常见的操作,其中,常用的函数有malloccallocreallocfree等。本文着重介绍使用malloc分配数组的方法。

malloc函数

malloc函数可以在运行时动态分配内存空间,其函数原型为:

void* malloc(size_t size);

其中,size参数表示要分配的内存空间大小,以字节为单位,返回值为一个指向类型void的指针,指向分配的内存空间的首地址。

int* p = (int*)malloc(10 * sizeof(int));

上面的代码示例使用malloc函数分配了一个包含10个整型数据的数组。由于malloc函数返回的是void类型的指针,因此需要将其转换为对应类型的指针。注意,在使用malloc函数动态分配内存后,需要手动释放内存空间。

动态分配数组

动态分配数组的方法,与动态分配一个变量类似,只需要将其声明为一个指针类型,通过malloc函数分配对应大小的内存空间即可。例如,声明一个包含5个整型数据的数组:

int* array = (int*)malloc(5 * sizeof(int));

注意,在使用动态分配的数组时,不要越界访问内存空间,同时也需要手动释放内存空间。

动态分配的应用举例

以下是一个简单的示例程序,演示了如何利用malloc函数动态分配一个整型数组,并对其进行操作:

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

int main() {
    int size, i, sum = 0;
    int* arr;
    
    printf("Please input the size of the array: ");
    scanf("%d", &size);

    arr = (int*)malloc(size * sizeof(int));     //动态分配内存空间

    printf("Please input the %d elements of the array:\n", size);
    for(i = 0; i < size; i++) {
        scanf("%d", &arr[i]);
    }

    for(i = 0; i < size; i++) {
        sum += arr[i];
    }
    printf("The sum of the array is %d\n", sum);

    free(arr);      //释放动态分配的内存空间
    
    return 0;
}

以上程序首先通过scanf函数获取数组的大小,利用malloc函数动态分配内存空间,使用for循环读取数组元素,计算数组元素的和,最后释放动态分配的内存空间。

总结

本文介绍了在C语言中使用malloc函数动态分配数组的方法,通过一个完整的示例程序演示了动态分配数组并进行操作的过程。在使用动态分配的内存空间时,需要注意内存泄漏和指针越界等问题,要谨慎使用并及时释放内存空间。