前言:本想直接写个关于OC语言,但觉得还是要说下C先。

先语言特性

C是面向过程的,没有类和对象概念,也就没有什么封装(这个?)、继承、多态等特性。

而且是是中级语言,其编译过程包括:预编译(include,宏,条件编译等)、编译成汇编、连接。

再语言属性

1.数据类型,这个N多了,多到很适合编写数据库

2.条件控制,这个和其他语言基本相同

3.运算符,这个基本也和其他语言一样

(其中位运算:~取反,&并,!或,^亦或[不同时为真],<<左移,>>右移)

4.(一维)数组、字符串,数组初始化地址连续,数组(名)即代表首地址,字符串即字符数组后加‘\0’组成

5.指针,被誉为C中最难的语法,这个其实就是个地址。

  A.指向指针的指针,其实只是指针指向的类型就是指针而已。晕,还是有点绕!

  B.数组与指针,这个有点变态,就是数组(名)可以和(指向)指针有几乎一样的效果

  (只是几乎一样,但也有点区别,如字符串赋值给数组和指针是不同的!一变量以常量)

  C.指向函数指针,这个就像C#里面的委托,即方法的指针,或叫函数首地址、入口地址怎样都行

  D.void类型指针,这个也说下,是代表指向不确定类型,也就是可以指向任何类型

6.结构体&共同体,结构体为了融合数组只能是同意类型而生出的不同类型,而共同体和结构体类似,只是公用一块存储地址

7.枚举&typeof,就说下typeof,其作用就是定义简化某一类型或函数

8.访问指针对象成员(查看C++是想起的,真是要比较才知~),即->,而.是访问普通&指针成员变量的

其它好像就没有什么的,其实C也不是很神奇的(当然也要有些基础的)。晕好像漏了个函数&变量,这个到也有点东西,里面牵涉一点概念,

首先,堆栈(存数据):栈,是连续存放的系统自动管理的少量空间,一般存储函数的参数值,局部变量;堆,和栈相反,一般程序员申请等。

补充下,文字常量区,存放字符串常量等, 程序结束后由系统释放;程序代码区,存放函数体的二进制代码。

再者,动静态存储区:动态者用完就没了,如函数内部变量;静态则(程序结束前)一直还在,全局变量、static定义内外部变量,调用完还在;

(这里又牵涉到C的面向过程的特点就是作用范围,外部变量的默认作用范围是从开始声明到本文件结束,内部就不说了。

extern声明可以使别的文件也可访问,默认;static声明就只能自身访问)

最后,内外不函数:前面和内外部变量类似,不过由于c有头文件,所以一般私有方法只要不在h文件定义就是了。

好像还有一些冷门的设计寄存器(即cpu)啊---有点牵涉底层嵌入式开发,还有些怪异的函数什么的就没必要多说了。。

其实C里面还是有不少细节的东西,如前面static的内部变量使用的效果就又是有点奇葩的,还有内连函数(C++?)等等。

虽然C++小的了解不深,但OC中可能混有相关代码,java的JNI/NDK等都可能用到,

这里随便补充一些(简单翻下资料归纳的)C与C++的区别吧

首先意念上,C重算法数据结构,面向过程,C++半面向对象,重对象模型封装控制。。

再就是语法上(主要是C++比C多出的)

1.输入输出,cout<< & cin>>,对c的printf&scanf

2.引用别名&,类型 & 新变量=就变量,只能初始化定义一次

3.内联函数,编译是替换

4.重载方法(同一文件内)&默认参数

5.作用域运算符::,这个只能用于访问(定义)外部变量或函数用的

6.运算符重载,这个和C#类似

7.new&delete,开辟(实例化)&撤销内存,对应c中malloc&free,这个应该知道就ok了

8.输入输出&文件操作函数,这个我也没去细看,要用时再查看下调用方式就行

9.面向对象,

  A.多继承&继承访问修饰(这个让我有点头疼的!)

  B.构造&析构函数,这个和C#差不多

  C.操作修饰符,要this,public等类似C#的修饰,而没有extern等

  D.friend友元(函数),类中声明内外定义,方便调用访问内部变量

  E.虚函数&抽象类,还有=0的纯虚函数,类似C#抽象方法

10.template模版,有点类似C#的泛型,分函数模版&类模版,STL标准模版库(里面有类似C#的集合类型模版),

11.MFC,说了STL好像也有说下MFC基础类库,即VC++提供大部分封装好的类。还有个句柄,就是winfrom唯一标识、指针

上面是主要区别,其他就没多少不同了(或者说也和C#基本语法没太多区别了)。还有一些很少用的怪异运算符之类,不过看到代码也能估计出大致意思。

最后一点不同就是VC++图形界面开发、控件使用的不同了。

以上是C/C++语言的整体脉络,大概基本就是这样了的。其实,如果程序是=数据+算法,那我都有点觉得编程=语言+工具+思想。

最后就是,C语言只是一门编程语言,更应该说是一门编程思想(大学时怎么领会到?),学好了就如学会了九阳神功!好逼格,呵呵~

PS,下次不定时归纳下前端优化、后端分布式并发处理等,还是OC语言(JAVA&C#只应谈架构体系),IOS开发涉及有点概念&相关知识点,

或者常见网络安全的攻击&预防方式&加密方式&SSL握手。。。有点多、有点乱。

由于近期还在找(适合)工作,还是待工作后再待续。。。

C/C++语言的一些精简归纳的更多相关文章

  1. Markdown - Typora 10分钟入门 - 精简归纳

    Markdown - Typora 10分钟入门 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 22 转载请注明出处! 目录 Markdown - Typora 10分钟入门 - 精简归纳 ...

  2. Windows & Linux 安装使用 Vim 编辑器 3分钟入门 - 精简归纳

    Windows & Linux 安装使用 Vim 编辑器 3分钟入门 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 25 转载请注明出处! 目录 Windows & Lin ...

  3. 史上!最最最简洁明了的 Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳

    Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 30 转载请注明出处!️ 目录 Java JDK 安装目录及其子目录含义 10分钟详解 ...

  4. 深入浅出 Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳

    Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 30 转载请注明出处!️ 目录 Java JDK 安装目录及其子目录含义 10分钟详解 ...

  5. JAVA JDK 环境变量配置 入门详解 - 精简归纳

    JAVA JDK 环境变量配置 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 13 转载请注明出处!️ 目录 JAVA JDK 环境变量配置 入门详解 - 精简归纳 一.为什么j ...

  6. Python安装与环境变量配置 入门详解 - 精简归纳

    Python安装与环境变量配置 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 24 转载请注明出处!️ 目录 Python安装与环境变量配置 入门详解 - 精简归纳 一.下载Py ...

  7. gcc g++ 安装与配置 入门详解 - 精简归纳

    gcc g++ 安装与配置 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 24 转载请注明出处!️ 目录 gcc g++ 安装与配置 入门详解 - 精简归纳 一.下载MinGW ...

  8. Sublime Text3 for Java 编译运行环境配置 入门详解 - 精简归纳

    Sublime Text3 for Java 编译运行环境配置 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 24 转载请注明出处!️ 目录 Sublime Text3 for ...

  9. 学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳

    学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 25 转载请注明出处!️ 目录 学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳 ...

随机推荐

  1. Nginx日志常用分析命令汇总 (转)

    三.常用日志分析命令 1.总请求数 1 wc -l access.log |awk '{print $1}' 2.独立IP数 1 awk '{print $1}' access.log|sort |u ...

  2. SilverlightERP&CRM源码(可用于开发基于Silverlight的CRM,OA,HR,进销存等)

    SilverlightERP系统源代码(支持创建OA.SilverlightCRM.HR.进销存.财务等系统之用) 可用于开发以下系统 SilverlightERP SilverlightCRM Si ...

  3. SilverlightOA源代码(可用于企业级Silverlight项目的二次开发,长年有效)

    Silverlight OA系统简介 系统功能简介 l 程序界面介绍: 左侧为主菜单,主菜单可以展开和收起,主菜单下面的所有模块都可以在数据库中扩展增加,模块的权限和用户角色挂钩,可以在数据库中创建多 ...

  4. go 的 protoc 插件调用逻辑

    要让protoc使用插件,需要做下面事情: Place the plugin binary somewhere in the PATH and give it the name "proto ...

  5. 我的ZJ解题心得

    想要学好程序设计第一是要养成你的编程思维,也就是你对编程的一种概念和思维定式,长期的解题会让你产生解题经验进而形成一种思维定式,比如看到一个题目就立即想出这题要用什么方法解题这样.编程思维我认为还包括 ...

  6. 【转】Samba配置文件详解

    一. 客户命令: 1. smbclient smbclient 命令用来存取远程 samba 服务器上的资源,它的界面到目前为止还是文本方式的,命令形式和 ftp 类似. smbclient 命令的语 ...

  7. 46. Partition List

    Partition List Given a linked list and a value x, partition it such that all nodes less than x come ...

  8. C/C++中的指针数组和数组指针

    1. 指针数组 定义:int *p[n],由于[]的优先级高于*,p和[]结合成一个数组,该数组的元素存储的是int类型的指针,由于数组内容是指针,因此p+1的步长是sizeof(int*),在32位 ...

  9. Oracle中快速查询和操作某个用户下的所有表数据信息

    一.禁止所有的外键约束 在pl/sql developer下执行如下语句:SELECT 'ALTER TABLE ' || table_name || ' disable CONSTRAINT ' | ...

  10. jsp配置项目时出错Deployment failure on Tomcat 6.x. Could not copy all resources to

    转自:http://www.2cto.com/kf/201201/116853.html 今天在网上部署项目的时候出现在了问题 tomcat一直部署不上 网上查了一下 原因记下来供大家查看 Deplo ...