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