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;
}
其他的 差异对比 下次再说............
|
|