char *test = "hello";
test = change_test("world");
printf("%s",test);
char* change_test(char *n){
printf("change: %s",n);
return n;
}
我尝试使用函数传递一个“串”回一个字符指针,但出现以下错误:不能返回,并指定字符数组在C指针
赋值时将整数指针没有投
我在做什么错?
char *test = "hello";
test = change_test("world");
printf("%s",test);
char* change_test(char *n){
printf("change: %s",n);
return n;
}
我尝试使用函数传递一个“串”回一个字符指针,但出现以下错误:不能返回,并指定字符数组在C指针
赋值时将整数指针没有投
我在做什么错?
未使用前向声明的功能将被视为具有签名int (...)
。您应该前瞻性声明它:
char* change_test(char*);
...
char* test = "hello";
// etc.
或只是移动的定义change_test
在您调用它。
您正在将整数转换为某处的指针。你的代码是不完整的,但是在猜测之前,我会说你在使用它之前没有定义change_test()
,所以C编译器猜测它的类型(并且假定它返回一个整数。)在调用它之前声明change_test()
所以:
char *change_test(char *n);
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);
感谢一群人!没想到我会通过午餐解决这个问题。这里是最后的测试类
/* 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;
}
1.让我们希望n指向一个少于248个字符的字符串。 2.这是C而不是C++。没有'new',尝试'malloc()'''calloc()'来代替。 – JeremyP 2010-07-27 12:15:02
@JeremyP你是对的,谢谢你纠正我。 – 2010-07-27 14:57:52