C语言指针作为形参的例子

来源:互联网 发布:玄空飞星排盘软件下载 编辑:程序博客网 时间:2024/05/16 07:49

编写子函动态申请内存,并将内存地址返回供主函数使用;
代码如下:

#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。

数值的传递,可以采用指针或者数组完成;通过改变数值的存放地址;而动态申请内存是地址的传递,所以需要指向指针的指针,来修改指针的地址,完成地址的传递。

0 0