Objective-C之定义函数

Demo1.m

一个基础的函数定义

#import<Foundation/Foundation.h>
//定义一个返回值为int类型的,名为max的函数。传入的参数为两个int型数据
int max(int x,int y)
{
    int z=x>y?x:y;
    return z;//返回结果
}
int main(int argc,char * argv[])
{
    @autoreleasepool{
        int a=6;
        int b=9;
        int result=max(a,b);//将a,b传入max函数,得到的返回值赋值给result
        NSLog(@"%d",result);//输出result的值
    }
}

Demo2.m

需要注意的地方

1.当函数指定的返回值类型和函数内return的值的类型不一样时,以函数指定的返回值类型为准

2.定义函数尽量定义在main函数前,虽然在Xcode中放在main函数后也可以,但是这并不符合C99标准,在其它运行环境中可能就会报错

(如果有强迫症或其它原因,一定要把函数放在在main函数后面,并且又想保持语言的规范性,那么请看Demo3.m)

3.如果函数没有返回值,一定要明确指定函数返回值类型为void

#import<Foundation/Foundation.h>
int main(int argc,char * argv[])
{
    @autoreleasepool{
        NSLog(@"通过调用函数,返回的值为:%f",demo_method(10,3));//输出demo_method的值
    }
}
//定义一个返回值为int类型的,名为demo_method的函数。传入的参数为两个int型数据
int demo_method(int x,int y)
{
    float z=x/y;
    NSLog(@"在函数内,还未返回时的值为:%f",(float)z);//输出demo_method的值//其中float是强制数据类型转换
    return z;//返回结果
}

Demo3.m

函数声明

好吧,其实Demo3.m和Demo2.m没什么差别,只是在main函数前把自定义函数事先声明了一下,让编译器知道我拥有一个叫demo_method的函数。声明格式很简单,看Demo3.m第一行代码就知道了

当然也可以写成

int demo_method(int,int);

也就是说形参列表不指定形参名,而是直接指定形参类型就OK了

int demo_method(int x,int y);
int main(int argc,char* argv[])
{
    @autoreleasepool {
        NSLog(@"The max is:%d.\n",max(8, 9));
        NSLog(@"%@",sayHi(@"Kitty"));
        NSLog(@"通过调用函数,返回的值为:%d",demo_method(10,3));//输出demo_method的值
    }
    return 0;
}
int demo_method(int x,int y)
{
    float z=(float)x/y;
    NSLog(@"在函数内,还未返回时的值为:%f",z);//输出demo_method的值
    return z;//返回结果
}

 

posted on 2015-07-08 13:30  chenyangsocool  阅读(587)  评论(0编辑  收藏  举报