c - C 中的交换指针 - 不兼容警告

标签 c pointers

函数交换完成了工作,它交换成功,但我收到警告,但我不知道为什么。

void swap(char **a,char **b) {
        char * temp = *a;
        *a=*b;
        *b=temp;
}

void function() {
    char ** arr[max]; // this is an array of pointers of pointers
    .....

    swap(&arr[0],&arr[1]);
}

警告:从不兼容的指针类型传递“交换”的参数 1 警告:从不兼容的指针类型传递“交换”的参数 2

最佳答案

arr[0] 是指向指针 (char**) 的指针。 &arr[0] 是一个指向指针的指针 (char***),但您的函数需要 char**

更正的功能:

void swap(char ***a,char ***b) {
    char **temp = *a;
    *a=*b;
    *b=temp;
}

关于c - C 中的交换指针 - 不兼容警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41491813/

相关文章:

c - 为什么在写入使用字符串初始化的 "char *s"时会出现段错误,而不是 "char s[]"?

c - 线程屏障同步

C sizeof 字符指针

c - c中的指针操作

c++ - 如何将 "\327\220\327\250\327\225\327\236"转换为希伯来语?

c - 使用 C 读取和传输大文件

关于 K&R 练习的澄清(不是解决方案)

c++ - 如何为类的继承层次结构的getters创建一个统一的接口(interface)?

c++ - 使用算术符号来遍历字符串

c - 以下 C 程序的输出是什么?