错误指针类型不兼容?

时间:2014-02-10 16:56:05

标签: c pointers

#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   getInput(安培;字符串);   ^ exer7.c:5:6:注意:预期'char * '但参数类型为'char()[50]'  char getInput(char * x [50]);

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

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

3 个答案:

答案 0 :(得分:1)

char *x[50]声明xarray of pointers.&amp; string`属于指向数组的指针。两种类型都不兼容。

将您的功能声明更改为

char getInput(char x[50]);   

并将其命名为

 getInput(string);

答案 1 :(得分:1)

void getInput(char (*x)[50]);

int main (){
    char string[50];
    getInput(&string);
    return 0;
}

答案 2 :(得分:0)

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

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