1. 程式人生 > >C語言指標作為形參的例子

C語言指標作為形參的例子

編寫子函動態申請記憶體,並將記憶體地址返回供主函式使用;
程式碼如下:

#include<stdio.h>
#include<malloc.h>
int getData(float **data_buffer,int *data_size) {
    //*data_buffer中存的是指標data_buffer的地址;
    *data_buffer = (float *)malloc(100*sizeof(float));
    for (int i = 0; i < 100; i++) {
        (*data_buffer)[i] = i*1.0f;
    }
    int
arry_size = 100; *data_size = arry_size; return 0; } int main() { float *data_buffer=NULL; int data_size = 0; char error = 0; error = getData(&data_buffer, &data_size); if (data_buffer ==NULL) { printf("Get data_size failed!\n"); return -1; } for
(int i= 0; i < data_size; i++) { printf("%f ", data_buffer[i]); if (i % 10 == 0) printf("\n"); } free(data_buffer); return 0; }

float **data_buffer宣告,注意這是指向指標的指標;
呼叫子函式時採用&data_buffer;實參(指標data_buffer的地址)傳遞給形參**data_buffer;其實是*data_buffer中存放的是指標data_buffer的地址;**data_buffer指向指標data_buffer。

數值的傳遞,可以採用指標或者陣列完成;通過改變數值的存放地址;而動態申請記憶體是地址的傳遞,所以需要指向指標的指標,來修改指標的地址,完成地址的傳遞。