【发布时间】:2012-01-08 19:32:56
【问题描述】:
我对 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 数组,然后将其传入。
处理这种情况的正确方法是什么?
【问题讨论】:
标签: c string dynamic-allocation