摘自《c专家编程》,作为备忘
1. 直接返回简单的字符串
char *func() { return "Simple string demo! "}
这是最简单的解决方案,字符串常量存储在只读存储区,如果字符串需要通过计算得到,这种方式就不能使用
2. 使用全局字符数组
这种方式很容易理解,不多解释。但是全局变量尽量少用!
3. 使用静态数组,形如
char *func() { static char buffer[BUF_SIZE]; ... return buffer; }
通过这种方式,只有拥有指向该数组的指针的函数才能修改这个静态数组
4. 通过malloc动态分配内存
char *func() { char *s = malloc(100); ... return s; }
5. 调用者通过malloc分配内存,并且调用函数的参数中指定缓冲区的大小
void func(char *result, int size) { strncpy(result, "That's be in the data segment!", size); } buffer = malloc(size); func(buffer, size); ... free(buffer);