回复 10# 的帖子
C只有传值这一种传参方式?为什么我们老师说还有地址传递.
比如说数组?
----------------解决方案--------------------------------------------------------
传址其实也是传值=传地址值
只是稍微特殊一点
所以有时候会特意提出来说
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]StarWing83[/un] 在 2008-5-9 03:23 的发言:[/bo]
你确定??
a的类型是char[10],绝对不是char*。在数组传参的时候,a会自动退化为const char*,然后再传值[/bo]给char*。所以看起来好像传给函数的时候,和char*是一样的。但是char[10]和char*有着本质的不同!
顺便说一下因为C只 ...
你确定??
a的类型是char[10],绝对不是char*。在数组传参的时候,a会自动退化为const char*,然后再传值[/bo]给char*。所以看起来好像传给函数的时候,和char*是一样的。但是char[10]和char*有着本质的不同!
顺便说一下因为C只 ...
表述可能不是很准确,我的意思只是想说明a.name是个地址,更准确的说应该是char[]而不是char[10],其实主要楼主能明白就好。
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]qinxinhai[/un] 在 2008-5-9 13:38 的发言:[/bo]
C只有传值这一种传参方式?
为什么我们老师说还有地址传递.
比如说数组?
C只有传值这一种传参方式?
为什么我们老师说还有地址传递.
比如说数组?
数组 指针 按地址传递 都属于传参 (这样就有了形参和实参)
----------------解决方案--------------------------------------------------------
C只有传值一种方式。C++有传值和引用两种方式。
传址和引用区别在于。引用变量和原变量完全相同,你对引用变量做的任何事情都和对原变量做的效果一样。而传址,下面有个例子:
char* StrCpy(char* dest,const char* source)
{
while(*dest++ = *source++);
return dest;
}
这里,dest是传址,但是照样可以把dest当作普通局部变量使用(这里是自加),而对原指针无影响。如果是传引用,那么自加过后,原指针的值就会发生改变了。
应该说,就是因为传值,所以才有了形参和实参的本质区别。而如果只是传引用的话,形参和实参是完全相同的。
引用上面某一楼的发言:传址是特殊的传值,所以才特别加以说明。
[[it] 本帖最后由 StarWing83 于 2008-5-10 05:43 编辑 [/it]]
----------------解决方案--------------------------------------------------------
StarWing83 解答的很好,这种精益求精的态度值得我好好学习。。。
----------------解决方案--------------------------------------------------------
回复大家
首先感谢大家对我的帮助,但我个人觉得这个是非常简单的东西,貌似你们的讨论离开了我的主题了吧??貌似我不是在问你们值的传递方式,我只是问某个方法为什么不行而已,你们讨论了那么多好象太离谱了吧?? ----------------解决方案--------------------------------------------------------
9#已经给出完美回答了,LZ看答案要仔细……
----------------解决方案--------------------------------------------------------