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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© m573555543 中级黑马   /  2014-5-1 20:17  /  1313 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 m573555543 于 2014-5-5 12:09 编辑
  1. 由   
  2. void test(int w, int s)
  3. {
  4.     w = 20;
  5.     s = 200;
  6. }
  7. 改为:
  8. void test(Car *s,Car *w){
  9.    
  10.     s->speed=50;
  11.    
  12.     w->wheel=20;
  13. }
  14. 中的 Car *s,Car *w是什么意思,里面的s->speed=50;是可以理解为指针之间的传递么?

  15. test(c->wheels, c->speed);
  16. 改为: test(c,c)
  17. 这两句话怎么理解?


  18. 以上这些能不能改成其他的?


  19. // 这个话函数的调用都在函数的内部,没有值传出来。
  20. void test1(Car *w ){

  21.     // 新建一个指针c2
  22.    Car *c2=[Car new];
  23.     //附值
  24.     c2 -> wheel = 2;
  25.     c2-> speed = 30;
  26.     //把c2的地址附值给w
  27.     w = c2;
  28.     // w改写wheel的值为3.
  29.     w-> wheel = 3;

  30.     // 从头到尾都没有把值传递出去。
  31. }

  32. 如何能把这个里面新建的c2值传递出去?
复制代码


评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

倒序浏览
由   
void test(int w, int s)
{
    w = 20;
    s = 200;
}
改为:
void test(Car *s,Car *w){        // 这个就是不传递值了,传递的是指针变量,把结构体变量的地址传递过来了
   
    s->speed=50;        // 这个是结构体属性的赋值,s是你传递过来的结构体,给结构图Car *s的speed属性赋值
   
    w->wheel=20;
}
中的 Car *s,Car *w是什么意思,里面的s->speed=50;是可以理解为指针之间的传递么?

test(c->wheels, c->speed);       
改为: test(c,c)                // 你这两个写法就都是错误的,数据类型没有啊
这两句话怎么理解?


以上这些能不能改成其他的?


// 这个话函数的调用都在函数的内部,没有值传出来。
void test1(Car *w ){        // 传递的是w的值,w里存的是Car结构体的地址

    // 新建一个指针c2
   Car *c2=[Car new];
    //附值
    c2 -> wheel = 2;
    c2-> speed = 30;
    //把c2的地址附值给w
    w = c2;        //这个只是把w存的地址改成了c2存的地址, 相当于改的是值传递
    // w改写wheel的值为3.
    w-> wheel = 3;        // 这个是改的c2地址的结构体属性

    // 从头到尾都没有把值传递出去。
}
如何能把这个里面新建的c2值传递出去?
// c2在结束以后就被回收了,想把c2的值传递出去
void test1(Car *w ){

    // 新建一个指针c2
   Car *c2=[Car new];
    //附值
    c2 -> wheel = 2;
    c2-> speed = 30;

    // w改写wheel的值为3.
    w-> wheel = c2 -> wheel;
    w-> speed = c2 -> speed;
   
}
你这个不是对象和函数的问题,而是结构体和函数的问题

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
兰闻天 发表于 2014-5-2 08:54
由   
void test(int w, int s)
{

test(c->wheels, c->speed);        
改为: test(c,c)                // 你这两个写法就都是错误的,数据类型没有啊
这两句话怎么理解?

我是上面的test(c->wheels, c->speed);    不能运行
改为 test(c,c)就能运行,所以想问下为什么。
回复 使用道具 举报
m573555543 发表于 2014-5-2 17:40
test(c->wheels, c->speed);        
改为: test(c,c)                // 你这两个写法就都是错误的 ...

void test(Car *s,Car *w){        // 这个就是不传递值了,传递的是指针变量,把结构体变量的地址传递过来了
   
    s->speed=50;        // 这个是结构体属性的赋值,s是你传递过来的结构体,给结构图Car *s的speed属性赋值
   
    w->wheel=20;
}
传的时候就是让你传对象的,而不是让你传实例变量的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马