A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 张文文   /  2015-1-9 09:47  /  6826 人查看  /  51 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. #include <stdio.h>
  2. int sum(int num1,int num2)
  3. {
  4.     num1=30;  //如果是基本数据类型作为函数参数,纯粹是值传递,修改函数内部形参的值,并不会影响外面实参的值
  5.     return num1+num2;
  6. }
  7. int sum1(int *p1,int *p2)
  8. {
  9.     *p1=11;//这里是指针作为函数参数,是地址传递,修改指针指向的地址的参数的值,,会改变外面的实参的值
  10.     return *p1 + *p2;
  11. }
  12. int main(int argc, const char * argv[]) {

  13.         int a=1;
  14.         int b=2;
  15.         int c=sum(a,b);
  16.         printf("%d %d %d\n",a,b,c);
  17.         int *p;
  18.         p= &a;
  19.         int *p1;
  20.         p1= &b;
  21.         int c2 = sum1(p, p1);
  22.         printf("%d %d %d\n",a,b,c2);

  23.     return 0;
  24. }
复制代码

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1

查看全部评分

回复 使用道具 举报
哇,都好棒啊。

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1

查看全部评分

回复 使用道具 举报
大家都一起努力加油

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1

查看全部评分

回复 使用道具 举报
还是前段时间时间看的视频,有点记不清了,只记得形参的改变不会改变实参

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1

查看全部评分

回复 使用道具 举报
值传递:将参数的值copy一份传递过去
引用传递:将参数的内存地址传递过去,直接对地址内的值进行改变

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1

查看全部评分

回复 使用道具 举报
值传递只是改变了新开辟的地址空间中的内容,函数一执行完毕释放空间,原函数的值并没有改变。而地址传递操作的是传递的是指针,所以交换后指向的对象改变,也就是改变了参数的内容

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1

查看全部评分

回复 使用道具 举报
第6期终于开版了,恭喜

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1

查看全部评分

回复 使用道具 举报
我的理解是:基本数据类型都是值传递。数组对象等名称代表地址的都是地址传递

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1 不太对哦。仔细看下视频

查看全部评分

回复 使用道具 举报
确实是,痛并快乐着

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1

查看全部评分

回复 使用道具 举报
支持,必须的,期待进黑马

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1

查看全部评分

回复 使用道具 举报
看完视频再看这些,理解的更透彻了

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1

查看全部评分

回复 使用道具 举报
努力,让自己不要再后悔一次......

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1

查看全部评分

回复 使用道具 举报
加油   必须要改变自己

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1

查看全部评分

回复 使用道具 举报
其实不管是传值还是传地址
对于所传参数本质上都要进行相应参数的拷贝  这是函数为了不影响原值的一种安全规定
传值就是复制数值 传地址就有指针变量负责复制地址
用经典的书名和书架的例子
传只好比重新抄写了这本要用的本书
而传地址就是记下了这本书在书架的第几行第几列的位置
根据这个位置找到相应的书即可
但是值传递比地址传递通常来说更安全  而地址操作相对高效  要依情况取舍使用

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1

查看全部评分

回复 使用道具 举报
学习了  大家都加油

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1

查看全部评分

回复 使用道具 举报
QYMHS 中级黑马 2015-1-12 17:47:27
36#
基础很重要啊!

评分

参与人数 1黑马币 +1 收起 理由
张文文 + 1

查看全部评分

回复 使用道具 举报
行我福 来自手机 中级黑马 2015-1-27 10:42:39
37#
2楼正解,说的很详细。
回复 使用道具 举报
值传递只是传递变量的值给函数,函数运行结束后,传递的变量不会改变
地址传递是传递保存变量的地址,如果在函数中改变了,外面变量的值也会改变

评分

参与人数 1黑马币 +3 收起 理由
张文文 + 3

查看全部评分

回复 使用道具 举报
前排围观
回复 使用道具 举报
大家已经说完了 ,还让我怎么说啊?:'(
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马