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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 代战 中级黑马   /  2015-12-7 01:03  /  742 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


               c与oc的基础对比与转换
1.c语言的组成 由一个或多个程序段组成 我们一般称这些程序段为函数。
例如下面一个简单的满足加减乘除的c程序:

#include<stdio.h>
//函数声明
int add(int a,int b);//声明一个加法函数
int sub(int a,int b);//声明一个减法函数
int ride(int a,int b);//声明一个乘法函数
int divide(int a,int b);//声明一个除法函数
//main函数
int main(){
     //定义变量 a b用于接收要运算的数据 c用于接收计算方式 count为结果
    int a,b,c,count;
  //用于在显示屏原样输出”“内的话
    printf("请选择计算方式:1.加 2.减 3.乘 4.除");
   //在控制台输入数据
    scanf("%d",&c);
    printf("请输入要计算的数用逗号隔开!");
    scanf("%d,%d",&a,&b);
    //switch 选择控制语句 用于判断计算方式
    switch (c) {
        case 1:
            count=add(a,b);//函数调用 调用add函数
            break;
        case 2:
            count=sub(a,b);//函数调用 调用sub函数
            break;
        case 3:
            count=ride(a,b);//函数调用 调用ride函数
            break;
        default:
            count=divide(a,b);//函数调用 调用divide函数
            break;
    }
    //输出最后的结果
    printf("%d",count);
   
    return 0;
}
//用于实现加法的函数
int add(int a,int b){
    return a+b;
}
//用于实现减法的函数
int sub(int a,int b){
    return a-b;
}
//用于实现乘法的函数
int ride(int a,int b){
    return a*b;
}
//用于实现除法的函数
int divide(int a,int b){
    return a/b;
}

这个简单的程序含有五个五个程序段 主函数 main 加法函数 add 减法函数 sub 乘法函数 ride 除法函数 divide
主函数 通过函数声明就可调用其它的函数 用于实现要求 而其它的函数声明过后 只要不调用就不会实现
这大大减少了main函数的代码和编译速度 使得main函数更加简洁明了 而且便于观看理解程序功能 而且便于修改函数功能

2.oc 是面向对象的语言 首先 头文件的不同 oc 使用#import<Foundation/Foundation.h>  1:可以防止重复包含
2:其即使头文件也是头文件位置 等于把oc的库文件都引过来了 便于使用
而 c 语言使用 #include<stdio.h> 由于include是预处理指令 不能防止重复包含



/*
oc的加减乘除实现:
*/
#import<Foundation/Foundation.h>
//类的声明
@interface Calculator :NSObject
//下面是oc方法的声明 形式类似于 c函数的声明 但两者形式不同 差别也很大
/*
对象方法 都要以减号开头 数据类型要用()括起来 ,函数不需要
对象方法 必须写在@interface @end之间 实现必须在 @implementation @end C语言中函数不需要

*/
-(void) addofNum1:(int) a Num2:(int) b;
//对象方法的参数与方法名之间以冒号:分割 ,函数是以括号()例如 下面的声明
-(void) subofNum1:(int) a Num2:(int) b;
-(void) rideofNum1:(int) a Num2:(int) b;
-(void) divideofNum1:(int) a Num2:(int) b;

@end
//方法的实现
@implementation Calculator


-(void) addofNum1:(int) a Num2:(int) b
{
   
    NSLog(@"两个数的和是:%d",a+b);}
-(void) subofNum1:(int) a Num2:(int) b
{
   
    NSLog(@"两个数的差是:%d",a-b);
}

-(void) rideofNum1:(int) a Num2:(int) b
{
   
    NSLog(@"两个数的积是:%d",a*b);
}

-(void) divideofNum1:(int) a Num2:(int) b
{
   
    NSLog(@"两个数的商是:%f",(double)a/b);

}


@end

int main(){
    //c创建一个对象p
   //对象 p 是用来调用方法的 刚刚声明的是对象方法 -()是对象的声明 +()是类的声明
    Calculator *p = [Calculator new];
   /*
      对象方法归类/对象所有 函数归文件所有
    */
   //方法的声明
    [p addofNum1:10 Num2:21];
    [p subofNum1:10 Num2:21];
    [p rideofNum1:10 Num2:21];
    [p divideofNum1:10 Num2:21];

      return 0;
}



其他的 差异对比 下次再说............
























2 个回复

倒序浏览
赞一下,顶楼主,打的不容易把
回复 使用道具 举报
oc 主要是操作类,但其实类里面的方法也是自己写的,用的还是 C 里的东西
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马