c++高手进,下面这个程序用到的是地址传递,请解释一下结果是怎样得到的?

#include <iostream>
using namespace std;
#include<cstring>
void change(char str1[20]);
int main()
{
char name[10]="Ding";
cout<<name<<endl;
change(name);
cout<<name<<endl;
return 0;
}
void change(char str1[20])
{
strcpy(str1,"Zheng");
}
输出的结果为
Ding
Zheng
这个程序为什么是地址传递啊?change(name)中的name表示的不是首地址?cout<<name<<endl;中的name输出的应该是一个字符Z怎么是Zheng?请高手分别详细解答一下?

第1个回答  2011-09-26
数组名称代表的是数组内存的起始地址,当调用函数change(name)时,相当于把数组name的起始地址告诉了change()函数,这时str1和name两个数组使用相同的内存空间,所以就产生了这样的结果。
第2个回答  2011-09-29
1.数组做参数都是地址传递
2.name是表示首地址,因为数组名都是表示首地址
3name输出的是Zheng
因为函数strcpy(str1,"Zheng");是将Zheng拷贝到str1在本例中就是name数组中去了本回答被提问者采纳
第3个回答  2011-09-26
change(name);
引入name数组的地址,然后向该地址拷贝"Zheng",所以第二次为"Zheng"
第4个回答  2011-09-26
字符串实际上是n个字符的数组,传给函数的就是这个字符串数组的首地址
第5个回答  2011-09-26
但是change(char str1[20])中的形参是字符数组啊,并不是指针变量啊

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网