zoukankan      html  css  js  c++  java
  • 老问题了,函数返回指向常字符串的指针,形如 char *func()

    摘自《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);
  • 相关阅读:
    hdoj5813【构造】
    Codeforces645B【树状数组求逆序数】
    pojcoin【未完待续】
    hdoj5818【模拟】
    poj2385【基础DP】
    poj3069【贪心,水】
    谦虚
    poj3617【贪心】
    poj2229【完全背包-规律Orz...】
    poj3176【简单DP】
  • 原文地址:https://www.cnblogs.com/rocklee25/p/6879874.html
Copyright © 2011-2022 走看看