c/c++语言开发共享c++函数传递指针的本质与字符串指针与字符数组的区别

我帮室友看到二级题,突然发现一个坑 记录一下 题的大概意思是,给函数传一个char指针 然后 把字符串末尾的*号去掉 比如 给的字符串是 ******aaa******* 输入******aaa

我帮室友看到二级题,突然发现一个坑 记录一下

题的大概意思是,给函数传一个char指针 然后 把字符串末尾的*号去掉
比如 给的字符串是 ******aaa*******
输入******aaa

题中给定的框架是:

  void func(char*string)  {  /**  写代码  **/  }  int main()  {      char str[] = "*****aaaaa****";      func(str);      printf("%s",str);      getchar();      return 0;  }

答案:

  void func(char*string)  {      while (*string!='')      {          string++;      }      string--;        while (*string =='*')      {          string--;      }        *(string+1) = '';      cout <

答案很简单,问题在于,如果把main函数中的 char str[] = "*****aaaaa****"; 换成 char *str ="*****aaaaa****"; 在运行 程序直接奔溃

原因:c 语言中 - 字符串是常量,不可更改的,在func中*(string+1) = '';先当与更改一个常量,导致奔溃 - 字符数组显然不是常量,故更改不会导致奔溃。它截取字符串的操作相当于用‘’截断了字符串

using namespace std; void func(char*string) { while (*string!='') { string++; } string--; while (*string =='*') { string--; } cout <

在main函数中和在func函数中打印出的值为什么不同 传递的是指针哇。 想了几秒钟,突然意识到,函数传递指针只可以改变指针指向的值,并不能改变指针本身!函数传递指针离不开拷贝,只不过传递指针是去拷贝指针(即地址数据),而非拷贝值。

c++函数传递指针的本质与字符串指针与字符数组的区别


同时我有个神奇的想法,如果代码这么写

  #include   

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/c-cdevelopment/606288.html

(0)
上一篇 2021年5月13日
下一篇 2021年5月13日

精彩推荐