无法返回并将C数组赋值给C中的指针

时间:2010-07-27 12:02:45

标签: c

    char *test = "hello";

    test = change_test("world");

    printf("%s",test);

char* change_test(char *n){
    printf("change: %s",n);

    return n;
}

我试图使用函数将'string'传递回char指针,但得到以下错误:

赋值从整数中生成没有强制转换的指针

我做错了什么?

4 个答案:

答案 0 :(得分:7)

使用没有前向声明的函数将被视为具有签名int (...)。你应该向前声明它:

char* change_test(char*);
...
  char* test = "hello";
  // etc.

或者只是在之前移动定义change_test

答案 1 :(得分:1)

printf()将文本打印到控制台但不更改n。请改用此代码:

char *change_test(char *n)  {
    char *result = new char[256];
    sprintf(result, "change: %s", n);
    return result;
}
// Do not forget to call delete[] on the value returned from change_test

在调用之前还要添加change_test()的声明:

char *change_test(char *n);

答案 2 :(得分:0)

您正在将某个整数转换为指针。你的代码是不完整的,但是猜测我会说你在使用它之前没有定义change_test(),所以C编译器猜测它的类型(假设它返回一个整数。)声明{{ 1}}在调用它之前,就像这样:

change_test()

答案 3 :(得分:0)

谢谢一群人!没想到我会在午餐时解决这个问题。这是最终的测试类

/* standard libraries */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* change_test(char*);


int main(){

    char *test = "hello";
    test = change_test("world");
    printf("%s",test);

    return (EXIT_SUCCESS);
}

char* change_test(char *n){
    return n;
}