求教C++的有关函数问题

来源:百度知道 编辑:UC知道 时间:2024/06/20 16:43:46
#include "stdafx.h"
#include <string.h>

void aaaaa (char s1[], char s2[], char s3[]);
void bbbbb (char a, char b);

void main()
{
char str1[] = "zxcv";
char str2[] = "asdf";
char cc = '1';
char dd = '2';

aaaaa (str1, str2, str3);
bbbbb (cc, dd);

printf("%s\n", str1);
printf("%s\n", str2);
printf("%c\n", cc);
printf("%c\n", dd);
}

void aaaaa (char s1[], char s2[], char s3[])
{
strcpy (s1, "ff");
strcpy (s2, "oo");
}

void bbbbb (char a, char b)
{
a = 'v';
b = 'c';
}

为什么输出是
ff
oo
1
2

不应该是
ff
oo
2
1
吗?
为什么?
后面打错了

不应该是
ff
oo
v
c
吗?
为什么?

~还是函数形参传值不传址的问题,也就是说形参传递的是一个副本,
若传的是指针,当然指针本体和副本所指地址也是相同的,就如
数组传递的是本身地址

c++的引用就是传递指针的封装

void bbbbb (char a, char b)
{
a = 'v';
b = 'c';
}
改成
void bbbbb(char &a,char &b)
{
a='v';
b='c';
}

第二个函数的形参只是值传递 对形参做的操作不会改变实参的值的 用引用试试啊

cc,dd只是在bbbbb (char a, char b)
函数内部进行交换,没有进行值传递,

你可以查看指针那章看看值传递就清楚了