分配中的类型不兼容

时间:2012-06-24 23:33:31

标签: c

我正在用C编写一些代码:

int main(){
    char guess[15];
    guess = helloValidation(*guess);
    return 0;
}

我的功能是:

char[] helloValidation(char* des) {
    do {
        printf("Type 'hello' : ");
        scanf("%s", &des);
    }while (strcmp(des, "hello") != 0);
        return des
}

但它给了我这个错误:

incompatible types in assignment 

4 个答案:

答案 0 :(得分:8)

guess数组由函数本身修改。然后,您尝试重新分配数组指针guess,从而导致错误。更不用说错误地尝试引用*guess或错误地使用&des了。我建议你阅读C指针/数组概念。

#include <stdio.h>
#include <string.h>

char* helloValidation(char* des) {
    do {
        printf("Type 'hello' : ");
        scanf("%s", des);
    } while (strcmp(des, "hello") != 0);
    return des;
}

int main() {
    char guess[15];
    helloValidation(guess);
    return 0;
}

答案 1 :(得分:3)

scanf声明不正确!它应该是:

scanf("%s", des);

答案 2 :(得分:1)

你无法将它分配给猜测,在你的情况下,你没有必要,因为你正在猜测函数(摆脱*)

因此该函数将改变猜测(不是它的副本)所以不需要尝试将其分配回来

helloValidation(guess);

答案 3 :(得分:-1)

因为您将猜测传递给helloValidation函数并在scanf中使用它,所以无需返回它并将其重新分配给char []引用。

替换

guess = helloValidation(*guess);

helloValidation(*guess);

您收到错误是因为猜测参考已经在堆栈上分配。你不能写它。如果猜测是一个指针,你可以在指针上写入值,但是它不会触及那里的内存。