c - C:警告:不兼容的指针类型将“int **”传递给“int *”类型的参数
问题描述
我有一个程序,它采用两个已经排序的数组并将它们排序到第三个数组中。
当我使用动态分配创建第三个数组并将其传递给函数时,我收到一个警告(不兼容的指针类型将'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 **v3 = malloc(t3 * sizeof(int *));
你想要一个数组int
,所以把它改成:
int *v3 = malloc(t3 * sizeof(int));
推荐阅读
- php - Laravel array validation for unique attribute in array but not required to be unique in table
- react-native - React-native + mobx how the Index.js should look like
- r - implementation of dot function `.()` in data.table package
- java - 如何在地图中获取键并输出一个键值是java中下一个键的输入
- ios - UIStackView dynamcially add 2 labels next to each other with no extra spacing
- ios - 无法在 Xcode 中启用健康记录功能
- node.js - 来自node.js的.env文件的Mongodb auth url
- javascript - Java script fetch 返回 200 但没有数据
- swift4 - 当我们在swift4中单击fscalendar中的下一个或上一个按钮时,我们如何只滑动一个月或一天
- javascript - Highcharts.SVGRenderer not working properly with Drill Down