2010-07-27 44 views
1
char *test = "hello"; 

    test = change_test("world"); 

    printf("%s",test); 

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

    return n; 
} 

我尝试使用函数传递一个“串”回一个字符指针,但出现以下错误:不能返回,并指定字符数组在C指针

赋值时将整数指针没有投

我在做什么错?

回答

7

未使用前向声明的功能将被视为具有签名int (...)。您应该前瞻性声明它:

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

或只是移动的定义change_test在您调用它。

0

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

char *change_test(char *n); 
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); 
+0

1.让我们希望n指向一个少于248个字符的字符串。 2.这是C而不是C++。没有'new',尝试'malloc()'''calloc()'来代替。 – JeremyP 2010-07-27 12:15:02

+0

@JeremyP你是对的,谢谢你纠正我。 – 2010-07-27 14:57:52

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; 
}