【问题标题】:Error incompatible pointer type?错误不兼容的指针类型?
【发布时间】:2014-02-10 16:56:05
【问题描述】:
#include<stdio.h>
#include<string.h>

char getInput(char *x[50]);

main (){

char string[50];
getInput(&string);
}

char getInput(char *x[50]){
printf("What is the string?");
gets(*x);   
}   

我不断收到这些错误...

exer7.c:20:2: 警告:从不兼容的指针类型传递“getInput”的参数 1 [默认启用] 获取输入(&字符串); ^ exer7.c:5:6:注意:预期为“char *”,但参数类型为“char ()[50]” char getInput(char *x[50]);

我一直在更改指针和与号,但我真的不知道正确的指针类型,请帮助:(

顺便说一句,这只是一个代码 sn-p,我还有许多其他用户声明的函数,我不需要在这里发布。

【问题讨论】:

    标签: c pointers


    【解决方案1】:
    void getInput(char (*x)[50]);
    
    int main (){
        char string[50];
        getInput(&string);
        return 0;
    }
    

    【讨论】:

      【解决方案2】:

      char *x[50]x 声明为array of pointers.&string` 是指向数组的指针 类型。两种类型都不兼容。

      将你的函数声明改为

      char getInput(char x[50]);   
      

      并将其称为

       getInput(string);
      

      【讨论】:

      • 啊,所以你不必使用指针来自动更新值,比如整数和浮点数......谢谢:)
      • 实际上,在大多数情况下,数组名称在传递给函数时会转换为指向其第一个元素的指针。
      【解决方案3】:

      getInput(&amp;string); 你不应该通过&amp;string。只需将 char 数组的基地址 string 作为参数传递。

      char getInput(char *x[50]); 这个正式的论点也不正确。这应该是指向 char 或 50 字节的 char 数组的指针。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-07
        • 2010-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-04
        相关资源
        最近更新 更多