OC开发之——OC对象与函数参数(8)

一 概述

  • 学过其他编程语言的人可能对“按值传递”与“按址传递”有所了解
  • 按值传递:在调用函数中将原函数的值拷贝一份过去被调用的函数,在被调用函数中对该值的修改不会影响原函数的值
  • 按地址传递:在调用函数的时候将原函数的值所在的地址拷贝一份过去,被调用函数对这个地址所作的修改会影响原来的值。

二 示例(OC语言)

复制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <Foundation/Foundation.h>
@interface Car:NSObject
{
    @public
    int wheels;
    int speed;
    
}
-(void)run;

@end
@implementation Car

-(void)run
{
    NSLog(@"%d个轮子,速度为%d km/h的车子跑起来了",wheels,speed);
}

@end

void test(int w,int s)
{
    w=20;
    s=200;
}
void test1(Car *newC)
{
    newC->wheels=5;
}
void test2(Car *newC)
{
    Car *c2=[Car new];
    c2->wheels=5;
    c2->speed=300;
    
    newC=c2;
    newC->wheels=6;
}

int main()
{
   Car *c= [Car new];
    c->wheels=4;
    c->speed=250;
    //test(c->wheels,c->speed);
    //test1(c);
    test2(c);
    [c run];
    
    return 0;
}

三 说明

  • 上述方法中的:void test(int w,int s)是按值传递,参数是基本变量
  • 上述方法中的:void test1(Car *newC)和void test1(Car *newC),参数是对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值