老问题了,函数返回指向常字符串的指针,形如 char *func()
Posted rocklee25
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了老问题了,函数返回指向常字符串的指针,形如 char *func()相关的知识,希望对你有一定的参考价值。
摘自《c专家编程》,作为备忘
1. 直接返回简单的字符串
char *func() { return "Simple string demo!\n"}
这是最简单的解决方案,字符串常量存储在只读存储区,如果字符串需要通过计算得到,这种方式就不能使用
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);
以上是关于老问题了,函数返回指向常字符串的指针,形如 char *func()的主要内容,如果未能解决你的问题,请参考以下文章