C++string类作为形参传值,实参与形参的变化
【摘要】 携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情C++问题:使用函数调用,排序string字符串数组从小到大,没有使用指针和引用,为什么实参也会改变?源代码#include<iostream>#include<string>using namespace std;int main(){void sort(string []);string arra...
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
C++问题:
使用函数调用,排序string字符串数组从小到大,没有使用指针和引用,为什么实参也会改变?
源代码
#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语言中数组类型的改进。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)