C语言一维数组、二维数组传参

传递普通参数

float add2num(float num1, float num2);
int main()
{
    float num1, num2, num3;
    num1 = 1.1;
    num2 = 2.2;
    num3 = add2num(num1, num2);
    printf("num3 is %.2f\n", num3);
    return 0;
}
float add2num(float num1, float num2)
{
    float num3;
    num3 = num1 + num2;
    return num3;
}

传递一维数组

float *addNumArr1d(float num1, float* arr1);
int main()
{
    float num1;
    num1 = 1.1;
    float arr1[2] = {4.4, 5.5};
    float *result_arr;
    result_arr = addNumArr1d(num1, arr1);
    printf("result_arr[0] is %.2f\n", *result_arr);
    printf("result_arr[1] is %.2f\n", result_arr[1]);
    return 0;
}
float *addNumArr1d(float num1, float* arr1)
{
    //static float result_arr[sizeof(arr1) / sizeof(arr1[0])];
    float* result_arr;
    result_arr = (float*)malloc(sizeof(arr1) / sizeof(arr1[0]) * sizeof(float));

    result_arr[0] = num1 + arr1[0];
    result_arr[1] = num1 + arr1[1];

    return result_arr;
}

传递二维数组

float *addNumArr2d(float num1, float (*arr2)[2]);
// 二维数组需要定义列的长度,此处取2
// float *addNumArr2d(float num1, float arr2[][2]); // 效果相同
int main()
{
    float num1;
    num1 = 1.1;
    float arr2[2][2] = {{1, 2}, {3, 4}};
    result_arr = addNumArr2d(num1, arr2);
    printf("result_arr[0] is %.2f\n", *result_arr);
    printf("result_arr[1] is %.2f\n", result_arr[1]);
    return 0;
}
float *addNumArr2d(float num1, float (*arr2)[2])
// 二维数组需要定义列的长度,此处取2
// float *addNumArr2d(float num1, float arr2[][2]); // 效果相同
{
    static float result_arr[sizeof(arr2[0]) / sizeof(arr2[0][0])];

    result_arr[0] = num1 + arr2[0][0];
    result_arr[1] = num1 + arr2[1][1];

    return result_arr;
}

参考:
[1] 函数返回指针/数组
[2] 传递二维数组
有问题请联系[email protected]

你可能感兴趣的:(入门)