char *test = "hello";
test = change_test("world");
printf("%s",test);
char* change_test(char *n){
printf("change: %s",n);
return n;
}
我试图使用函数将'string'传递回char指针,但得到以下错误:
赋值从整数中生成没有强制转换的指针
我做错了什么?
答案 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;
}