八天学会OC

第02天OC语言(03):练习1

2017-07-20  本文已影响22人  liyuhong

pragma mark 03-练习2

pragma mark 概念

pragma mark 代码

import <Foundation/Foundation.h>

pragma mark 类

pragma mark main函数

@interface Person : NSObject
{
@public
int age;
double height;
}

void text1(int newAge, double newHeight);
void text2(Person *newP);
void text3(Person *newP);
void text4(Person *newP);

int main()
{
Person *p = [Person new];
p->age = 10;
p->height = 1.5f;

text1(p->age, p->height); // 10 1.5f
[p printf]; // 10 1.5f

text2(p);   // 指针,地址
[p printf]; // 20, 1.71

warning 主要text3复杂一点 因为内部 开辟了一块新的存储空间 需要看清楚指向谁

text3(p);   // 指针,地址
[p printf]; // 20 1.71

text4(p);   // 指针,地址
[p printf]; // 33, 1.99

}

@implementation Person

@end

void text1(int newAge, double newHeight)
{
newAge = 30;
newHeight = 1.6f;
}
// Person *newP = p
void text2(Person *newP)
{
newP->age = 20;
newP->height = 1.71f;
}
void text3(Person *newP)
{
Person *p2 = [Person new];
p2-> age = 40;
p2-> height = 1.8f;
newP = p2;
newP->age = 30;
}
void text4(Person *newP)
{
Person *p2 = newP;
p2 -> age = 50;
p2 -> height = 1.99f;
newP -> age = 33;
}

image.png
一、概念
二、代码
#import <Foundation/Foundation.h>
#pragma mark 类

#pragma 1.查找错误1
/*
@interface Person : NSObject
{
// 1.缺少了 @public
    @public
    int age;
    double height;
//    double height = 1.55; // 2.成员变量不能在定义的时候 进行初始化
//    - (void)study;
}
- (void)study;        // 3.方法只能写在{}外面
// 4.缺少@end
@end

@implementation Person
- (void)study
{
    NSLog(@"年龄为%d的人在学习",age);
}


@end

int main()
{
    // 地址只能用指针保存
    Person *p = [Person new];
    p->age = 10;
    p->height = 1.77f;
    [p study];
    return 0;
}
 */

#pragma 2.查找错误2
/*
@interface Test : NSObject
//- (int)addNum1(int)num1 andNum2(int)num2; // 1.缺少:
- (int)addNum1:(int)num1 andNum2:(int)num2;
//- (double)p1:; // 2.多了: 有参数才需要:
- (double)p1;
//- (void)text(); // 3.OC方法中 ()就一个作用, 用来扩住数据类型
- (void)text;
@end

@implementation Test

- (int)addNum1:(int)num1 andNum2:(int)num2
{
    return num1 + num2;
}
- (double)p1
{
    return 3.14;
}
- (void)text
{
    
}
@end

int main()
{
    return 0;
}
*/

#pragma 3.查找错误3

@interface Car : NSObject
{
    @public
    int wheels;
}
- (void)run;
- (void)text;
@end

// 1.方法的声明 必须写在类的声明中
//- (void)run;
//- (void)text;

@implementation Car

- (void)text
{
    NSLog(@"%i轮子的车跑起来了",wheels);

}

// 2. 方法不能是使用函数, 方法是方法,函数是函数
// 方法是属于一个类, 函数是属于一个文件
//- (void)run()
- (void)run
{
    NSLog(@"测试一下 车子 %i",wheels); // 3.不能在函数里面访问类的成员属性
}

// 4.方法的实现 只能写在@implementation
- (void)haha
{
    NSLog(@"haha");
}

@end



int main()
{
    Car *c = [Car new];
    [c run];
//    text(); // 方法不能当做函数来调用
    [c text];
//    haha();
    [c haha];
    
}
上一篇下一篇

猜你喜欢

热点阅读