【问题标题】:C: Warning: incompatible pointer types passing 'int **' to parameter of type 'int *'C:警告:不兼容的指针类型将“int **”传递给“int *”类型的参数
【发布时间】:2021-03-18 15:38:34
【问题描述】:

我有一个程序,它采用两个已经排序的数组并将它们排序到第三个数组中。

当我使用动态分配创建第三个数组并将其传递给函数时,我收到一个警告(不兼容的指针类型将“int **”传递给“int *”类型的参数),我应该怎么做才能解决这个问题?

谢谢!

#include <stdio.h>
#include <stdlib.h>

void printVec(int v[], int t){
    printf("[ ");
    for(int i = 0; i < t; i++){
        printf("%d ", v[i]);
    }
    printf("]");  
}

void interc2w(int a[], int ta, int b[], int tb, int c[], int tc, int i, int j, int k){
    if(k < tc){
        if(i < ta && j < tb) {
            if(a[i] < b[j]) {
                c[k] = a[i];
                interc2w(a, ta, b, tb, c, tc, i+1, j, k + 1);
                }
            else {
                c[k] = b[j];
                interc2w(a, ta, b, tb, c, tc, i, j+1, k + 1);
                }
            } else{
                if(i == ta) {
                    c[k] = b[j];
                    interc2w(a, ta, b, tb, c, tc, i, j+1, k + 1);
                }
                else if(j == tb) {
                    c[k] = a[i];
                    interc2w(a, ta, b, tb, c, tc, i+1, j, k + 1);
                }
                }
        } else return;
}

int main(){
    int v1[] = {5,12,19,21,30,50}, v2[] = {2,4,6,8,10,13,15,20,25,60};
    int t1 = (sizeof(v1)/sizeof(v1[0])), t2 = (sizeof(v2) / sizeof(v2[0])), t3 = t1 + t2;
    int **v3 = malloc(t3 * sizeof(int *));
    printf("Vetor 1: ");
    printVec(v1, t1);

    interc2w(v1, t1, v2, t2, v3, t3, 0, 0, 0);

    printf("\n\nVetor 2: ");
    printVec(v2, t2);

    printf("\n\nVetor 3 intercalado: ");
    printVec(v3, t1 + t2);
    
    return 0;
} 

【问题讨论】:

  • 为什么将v3声明为int**?

标签: c


【解决方案1】:

您将v3 定义为指向指针的指针,允许它保存指针数组的地址,并为指针数组分配空间:

int **v3 = malloc(t3 * sizeof(int *));

你想要一个int的数组,所以把它改成:

int *v3 = malloc(t3 * sizeof(int));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 2011-01-10
    • 2020-07-29
    • 2019-03-20
    • 2018-05-23
    • 2020-08-30
    • 2018-11-23
    相关资源
    最近更新 更多