Objective-C和C的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Objective-C和C的区别相关的知识,希望对你有一定的参考价值。
目前正在深入学习C++,学校交的比较浅。以后想从事ios开发,据说要学习objective-c语言,那么这个语言和C有没有很大的区别?我现在应该直接入手object-c?还是继续学习c?
区别如下:
1.性质不同
Objective-C,通常写作ObjC或OC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。
2.特点不同
Objective-C是非常实用的语言。它是一个用C写成很小的运行库,令应用程序的尺寸增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大。
3.创始时间不同
Objective-C创始时间是1980年代,C语言创始时间是1972年。
参考资料来源:百度百科--Objective-C
参考资料来源:百度百科--C
参考技术A一、Objective-C 的特点
Objective-C是非常实际的语言。它是一个用C写成、很小的运行库,只会令应用程序的尺寸增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。Objective-C写成的程序通常不会比其原始码大很多。而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。因此,Objective-C它完全兼容标准C语言(C++对C语言的兼容仅在于大部分语法上,而在ABI(Application Binary Interface)上,还需要使用extern "C"这种显式声明来与C函数进行兼容),而在此基础上增加了面向对象编程语言的特性以及Smalltalk消息机制。
二、 Objective-C同C++的异同
Objective-C是C的超集,但它也不视C的基本型别为第一级的对象。
和 C++不同,Objective-C 不支持运算子重载 (它不支持ad-hoc多型),而且与 C++不同,但和 Java 相同,Objective-C 只容许对象继承一个类别 (不设多重继承)。Categories 和 protocols 不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容。
Objective-C 和 C++的比较,Objective-Cs 单一继承不支持多重继承,(同Java和Smalltalk),而 C++语言支持多重继承。
Objective-C 是动态定型(dynamicaly typed),所以它的类库比C++要容易操作。Objective-C 在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。 C++ 跟从面向对象编程里的Simula 67(一种早期OO语言)学派,而 Objecive-C属于 Smalltalk 学派。 在 C++里,对象的静态类型决定你是否可以发送消息给它,而对Objective-C 来说,由动态类型来决定。Simula 67 学派更安全,因为大部分错误可以在编译时查出。 而 Smalltalk 学派更灵活,比如一些 Smalltalk 看来无误的程序拿到Simualr67 那里就无法通过。 从很多方面来看,C++ 和 Objective-C 的差别,与其说是技术上的,不如说是思维方式上的。
三、C 语言的特点及其优缺点
特点
C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。
C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。
不同的变量类型可以用结构体(struct)组合在一起。
只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。
部份的变量类型可以转换,例如整型和字符型变量。
通过指针(pointer),C语言可以容易的对存储器进行低级控制。 预编译处理(preprocessor)让C语言的编译更具有弹性。
优点
1、简洁紧凑、灵活方便 C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2、运算符丰富 C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。[13]
3、数据类型丰富 C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。
4、表达方式灵活实用 C语言提供多种运算符和表达式值的方法,对问题的表达可通过多种途径获得,其程序设计更主动、灵活。它语法限制不太严格,程序设计自由度大,如对整型量与字符型数据及逻辑型数据可以通用等。[
5、允许直接访问物理地址,对硬件进行操作 由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位(bit)、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。
6、生成目标代码质量高,程序执行效率高 C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编程序生成的目标代码效率低10%~20%。
7、可移植性好 C语言在不同机器上的C编译程序,86%的代码是公共的,所以C语言的编译程序便于移植。在一个环境上用C语言编写的程序,不改动或稍加改动,就可移植到另一个完全不同的环境中运行。
8、表达力强
C语言有丰富的数据结构和运算符。包含了各种数据结构,如整型、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。
C语言的运算符有34种,范围很宽,灵活使用各种运算符可以实现难度极大的运算。
C语言能直接访问硬件的物理地址,能进行位(bit)操作。兼有高级语言和低级语言的许多优点。 它既可用来编写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言。
另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
缺点
1、 C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。
2、 C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。
参考技术B 我也是同时学习c++和objective-c的,我的c和java还没有学透彻,但是出于对ios开发的热爱,我已经有两个app在itunes里面了我觉得真心想搞ios开发,可以直接学objective-c,比较节约时间(如果你时间不多的话)
但是程序员在聊天和教学的时候,都喜欢以c++里面的例子来说,例如objective-c 里面的protocal就是interface,学过c++的立即能理解,但是新学习objective-c就要新去理解
但是我觉得对于所以面向对象的程序语言,还是 相似 多余 不同,很多东西只是语法不同,其实本质差异不大。本回答被提问者和网友采纳 参考技术C 最主要得区别是Objective-C在原始的C语言主题上加入面向对象的概念。
Objective-C是C语言的母集合,意指任何原始的C语言程式都可以通过Objective-C编译器而不需要修改,也允许Objective-C使用任何原始的C语言代码。
参考资料:http://blog.sina.com.cn/s/blog_bf9843bf0101j0ge.html 参考技术D OC 是C的变种,差别是有些的,但是OC很大部分源于C,可以说你有C的基础学OC是很轻松的,我认为如果你想从事IOS开发,大胆放手学OC就好了.
Objective-C 和 C++ 的区别有哪些?
Objective-C开发语言是扩充C的面向对象编程语言,iOS开发是用的Objective-C语言,但是最近微软透露Objective C新技术,其最新IDE Visual Studio 2015能将Objective-C代码编译运行在Windows 10上。据说,这一技术可以将将Objective-C代码尽可能多的转变成Java或C++代码,挂钩进原生平台的 API。那么同样是“C”,Objective-C和C++之间有何不同?
Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。Objective-C可以在GCC以及Clang运作的系统上编写和编译,因为GCC与Clang含Objective-C的编译器。
Objective-C是非常实际的语言。它是一个用C写成、很小的运行库,只会令应用程序的尺寸增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。
Objective-C写成的程序通常不会比其原始码大很多。而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。
所以,理论上将,Objective-C它完全兼容标准C语言;相比之下,C++对C语言的兼容主要体现在语法上,Objective-C在此基础上增加了面向对象编程语言的特性以及Smalltalk消息机制。
和C++不同,Objective-C不支持运算子重载。
和Java相同,Objective-C只容许对象继承一个类别(不设多重继承),这一点也和C++不同。
Objective-C不支持多重继承,而C++语言支持多重继承。
Objective-C是动态定型(dynamicaly typed)所以它的类库比C++要容易操作。Objective-C 在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。
在C++里,对象的静态类型决定你是否可以发送消息给它,而对Objective-C来说,由动态类型来决定。
以上是关于Objective-C和C的区别的主要内容,如果未能解决你的问题,请参考以下文章