1. 程式人生 > >C-函式傳陣列引數給另一個函式,使用malloc

C-函式傳陣列引數給另一個函式,使用malloc

  //
//  main.c
// 
//
//  Copyright © 2018 [email protected]
//

#include <stdio.h>

#include<stdio.h>
void fun(int *array){
    int sum=0;
    for(int i=0;i<5;i++){
        printf("%d\n",array[i]);
        sum=sum+array[i];
    }
    printf("%d",sum);

}
int main(){
    int *buffer=(int*)malloc(sizeof(int)*5);
    if(buffer==NULL) exit(1);
    int array[5]={2,4,5,5,3};
    memcpy(buffer,array,sizeof(int)*5);
    fun(buffer);
}
   在C函式中宣告的非全域性變數都分配在函式的棧中,函式執行完畢後,記憶體將釋放。因此,當一個函式傳引數給另外一個函式時,如果傳遞的是一個記憶體塊(比如陣列等)的引用和指標,要使用malloc在堆中分配記憶體,這樣,才可以在多函式中共享訪問。