【发布时间】:2012-11-03 14:51:52
【问题描述】:
具体来说,我想知道我是否可以制作这样的东西:
typedef struct {
char *s; /* still a cstr, with '0' bit at end */
size_t len;
} str;
str *newstr(char *s) {/*...*/};
void freestr(str *s) {/*...*/};
并做这样的事情(将其视为具有stdlib/string 函数的 cstr):
int main() {
str *s = newstr("hello");
printf("The first character of '%s' is '%c'", *s, (*s)[0]);
freestr(s);
}
如果不是,这没什么大不了的——当然,我并不真正担心浪费一个字节。
【问题讨论】:
-
当然你不能像那样订阅你的结构 - 你需要 C++ 来做运算符重载。
-
printf()调用不起作用 - 它需要一个char*和一个char,但您实际上传递了一个char**和一个char*。 -
你的意思是:
printf("The first character of '%s' is '%c'", *s, (*s)[0]);,不是吗? -
@alk: 哦哦,谢谢你的收获。
标签: c