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])中的形参是字符数组啊,并不是指针变量啊

求c++高手解释一下程序的输出结果 ,谢谢!
然后执行下一句:q.show();输出依然是:Point[64]:(1,0)程序最后一句输出:p.showSumOfPoint();则输出:In total :66 points.全部讲解完毕。如果能当面解释应该很容易懂,因为要解释清楚,所以文字比 较长,有什么不周到之处,请谅解。

请教c++高手,下面的这个简单程序的运行结果按理说应当是1,怎么运行...
你在程序中并没有对局部变量 b 赋初值,因此 b 的值是不确定的。而 (b+3)==4 只是判断 b+3 是否等于 4,并不会改变 b 原来的值。这样一来,到 cout<<b<<endl; 的时候,自然输出 b 的不确定的值了,也就是你说的那个很大的负数。

C++的几个问题,高手进!
1. 调用有问题 函数是传地址,你调用的时候传了值0 2. 位运算 2|4=6 (倒数2,3位为1) ~3表示二进制最后两位为0其他为1 两者异或只有不同的值才为1 ,所以最后结果应该2^32-5 (我不肯定 自己去实验吧)3. =b0只是赋值,类型还是A &a1=b0则是传进来地址了,其实就相当于类型B 4...

C++面向对象编程高手请进来帮帮看看这个程序,关于文件操作的,在线等 ...
打开文件的时候要指定是打开输出和读入。file.open("my_daling.txt", ios::in | ios:: out | ios::app | ios::binary);

c++中,在一个类中参数传递中出现的一个问题
解决方法1:将 p1=((p1.getx()-X),(p1.gety()+Y)); \/\/有问题的地方 改成:double x_val,y_val;x_val=p1.getx();y_val=p1.gety();Point pTemp(x_val-X,y_val-Y);p1=pTemp;解决方法2:写个Point赋值的重载函数。void operator()(double x1,double y1){ x=x1;y=y1;}...

C++程序设计 整除问题,高手进
1、void count(int*a,int *n)定义一个无返回值的函数count,它有两个形式参数,第一个是指针a,指向int型数据,第二个是指针n,指向int型数据。2,3、参看注释 void countValue(int *a,int *n){ int i;n=0; \/\/n指向的内容赋值为0 for(i=1;i<=1000;i++){ if((i%7==0&&i%...

C++语言中的取地址运算符得到的是真实的地址吗?
不是内存中的真实地址。只是在当前应用程序的进程空间中的地址。

C或C++高手进从1到13中任选4个数,运用+,-,*,\/,()使其最后的值为24,这...
从1到13中任选4个数,运用+,-,*,\/,()使其最后的值为24,这怎么做,最好能给出程序和说下算法核心思想... 从1到13中任选4个数,运用+,-,*,\/,()使其最后的值为24,这怎么做,最好能给出程序和说下算法核心思想 展开  我来答 5个回答 #热议# 职场上受委屈要不要为自己解释?百度网友b0e28cae4 ...

C++高手解释一下程序,从int main() {...到...return 0;}里面的for 循 ...
int main() { int value=0;cout<<"Enter an 8 bit binary number: "; \/\/输入8位的二进制 for (int i=7;i>=0;i--) { \/\/循环8次 char ch; \/\/声明字符变量 cin>>ch; \/\/将输入的8进制的每个字符赋给ch if (ch=='1') ...

一个关于C语言自增++运算的题目,高手进
回答:根据编译器而不同, 在你的编译器中应该是这样执行的: y=(++x)+(x++)+(++x); 因为第二个(x++)有括号,所以就求解x++再执行括号外面的+,结果也就是3+4+5=12 在VC中就不同

相似回答