我对Java很熟悉,在C中不是这样。
在Java中,如果我有一个方法可以做某事并返回一个字符串,它看起来像:
private String doSomething(...) {
String s;
// do something;
return s;
}
C 中的等效句法不起作用,而且是完全错误的:
char* doSomething(...) {
char s[100];
// do something;
return s;
}
我当然可以:
char* doSomething(...) {
char *s;
s = malloc(100 * sizeof(char));
// do something;
return s;
}
这会起作用(我认为!)但我很少看到代码这样做(是因为它不必要地填充了堆?)
最常见的是,我看到:
bool doSomething(char *s) {
// do something that copies chars to s
return true;
}
调用语句将是:
char s[100];
doSomething(s);
如果在函数本身内部之前我不知道 char 数组的大小怎么办?即我将无法在函数外部声明 char 数组,然后将其传入。
处理这种情况的正确方法是什么?