c语言函数参数传递的是值还是拷贝

今日在看c语言return的相关章节时,不明白return返回的是值还是值的考博,同时对函数形参传递的是值还是拷贝也不解?比如int *p(int *pA);这个函数声明,当主函数调用该函数时,传递给形参pA的实参是一个指针还是该指针的拷贝呢?同理返回的函数P内部的指针还是那个待返回指针的拷贝呢??求帮助

第1个回答  2012-09-25
第一点:return 返回的是值拷贝,若是返回的是地址的话是地址的拷贝
第二点:函数形参传递,实参传递形参包括以下几点: A“基本数据类型”,B“自定义数据类型”,C“指针类型”,D“引用类型”等的传递,其中ABC三种无论出现在那种场合都是值拷贝或地址值拷贝,而D类是值传递。
第2个回答  2012-09-25
第一,你指的值是什么东东,逻辑的?物理的?拷贝又是什么东东?
第二,pA不是形参,*pA才是,是一个整形的指针,其实就是一个指向一块物理地址的值
第三,根据我个人的理解,主函数调用函数时传给子函数的变量,在“子函数中”是不会改变的,这大概就是你所谓的值吧(将实参的值赋给子函数的变量)
第四,关于return返回的值在子函数执行完毕后是放在寄存器里的,当主函数要保存该值时就会申请变量存储这个值
这些东西在操作系统里面讲的很清楚,我记得我们曾经学的是《unix操作系统教程》
第3个回答  2012-09-25
int *p(int *pA)主函数调用,传递给形参pA的实参是一个指针,就相当于实参指针指向一个值,pA指针也指向那个值,这是赋值,不能说是拷贝,
比如
int *k;
k=p(pA);///pA是自己定义的一个指针
///p函数返回时,是函数内部自己定义的指针,赋给k时,就是对指针进行赋值,不能说是返回指针拷贝,他们指向的值一样,但是意义不一样
第4个回答  2012-09-25
参数传递:1是值传递,传递的是拷贝;2是引用传递,是给实参取了个别名;3是指针传递,传递的是实参的内存地址。我记得就是这样来自:求助得到的回答
第4个回答  2012-09-25
参数传递有三种:1是值传递,传递的是拷贝;2是引用传递,是给实参取了个别名;3是指针传递,传递的是实参的内存地址。我记得就是这样···
相似回答