美文网首页
[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