前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++string类作为形参传值,实参与形参的变化

C++string类作为形参传值,实参与形参的变化

作者头像
计算机魔术师
发布2022-08-19 18:37:15
1.3K0
发布2022-08-19 18:37:15
举报
文章被收录于专栏:计算机魔术师

C++问题:

使用函数调用,排序string字符串数组从小到大,没有使用指针和引用,为什么实参也会改变?

源代码

代码语言:javascript
复制
#include<iostream>
#include<string>
using namespace std;

int main()
{
void sort(string []);
string array[3] = {"l" , "love" , "c++"};
sort(array);
for(int i = 0; i< 3;i++)
cout << array[i] <<" ";
return 0;
}

void sort(string s[])
{
string temp;
for(int i=0; i<2 ;i++)
{
  for(int j=0;j<2-i;j++)
  {
if(s[j + 1] < s[j])
{
temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
}
  }
}

}

改变的值是实参的值,也就是说实参对形参传的是地址,此时形参与实参为同一个地址,形参在改变形参也会改变,所以string类与数组做形参时一样,string类的形参是一个指针,接受的是字符串首个字符地址,其中数组类型在存贮数据是连续线性存贮的,而string类在存贮字符串数组则是存贮每个字符串首字母的地址,比如a[3] = {"I","love", "c++"}中a[2]为第一个字符串的地址,也就是love种l的地址,这样一来string类字符串数组的每一个字符串长度没有限制。

这是关于C++中string类比C语言中数组类型的改进。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/08/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档