首页 > 代码库 > 老问题了,函数返回指向常字符串的指针,形如 char *func()
老问题了,函数返回指向常字符串的指针,形如 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()
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。