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),参数是对象
发布了343 篇原创文章 · 获赞 117 · 访问量 52万+

猜你喜欢

转载自blog.csdn.net/Calvin_zhou/article/details/105217521
今日推荐