C語言指標作為形參的例子
阿新 • • 發佈:2019-01-07
編寫子函動態申請記憶體,並將記憶體地址返回供主函式使用;
程式碼如下:
#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。
數值的傳遞,可以採用指標或者陣列完成;通過改變數值的存放地址;而動態申請記憶體是地址的傳遞,所以需要指向指標的指標,來修改指標的地址,完成地址的傳遞。