美文网首页
[C指针]指针与字符串:传递字符串、返回字符串

[C指针]指针与字符串:传递字符串、返回字符串

作者: AkuRinbu | 来源:发表于2019-04-15 15:33 被阅读0次

    学习笔记

    《深入理解C指针》
    http://www.ituring.com.cn/book/1147
    第5章 指针与字符串

    三、传递字符串

    1、传递简单字符串

    形参是 char * str 或者 char str[ ]

    传递简单字符串
    • 函数调用,使用指针,直接用指针名
    • 函数调用,使用数组,有三种选择

    2、传递常量字符的指针

    形参是 const char* string

    • 不允许通过指针修改常量

    3、传递需要初始化的字符串

    https://www.jianshu.com/p/b798b6e79fbc

    4、给应用程序传递参数

    int main(int argc, char** argv) {}

    int main(int argc, char* argv[]) {}

    • 输出参数列表
     for(int i=0; i<argc; i++) {
            printf("argv[%d] %s\n",i,argv[i]);
        }
    

    四、返回字符串

    • 函数返回字符串时,返回的是字符串的地址

    1、返回字面量的地址

    • 静态变量,就是永远只有一份
    • 好处:可以避免在不同的地方存着多个值相同的“拷贝”
    • 隐患:函数中声明了静态字符串的指针,并且需要返回这个静态字符串的指针,多次调用这个函数,可能会造成覆盖
    staticFormat两次调用都使用同一个静态缓冲区,后一次调用会覆写前一次调用的结果

    (staticFormat两次调用都使用同一个静态缓冲区,后一次调用会覆写前一次调用的结果。)

    2、返回动态分配内存的地址

    函数内动态分配
    图5-14:返回动态分配的字符串
    • 函数内使用malloc动态分配内存,每次都返回不同的内存地址
    函数内返回局部数组地址
    • 函数内使用局部数组,返回局部数组地址,无法保证返回地址总是新的, 多次调用函数可能会造成覆盖

    相关文章

      网友评论

          本文标题:[C指针]指针与字符串:传递字符串、返回字符串

          本文链接:https://www.haomeiwen.com/subject/mjlswqtx.html