C语言知识整理(1):简介

由于项目要求,需要学习iOS移动端开发。iOS开发的核心语言是Objective-C,Objective-C是在C语言的基础加了一层面向对象的语法。为了能够更好地掌握Objective-C,故先学习C语言,再在C语言的基础上升华到Objective-C。

一、初认C语言

C语言简史

  • C语言于1972年发明,首次使用是用于重写UINX操作系统(UNIX以前是用汇编写的);
  • 随着UNIX操作系统的成功,C语言也得到了大幅度地推广,至今还是世界上最流行、使用最广泛的高级程序设计语言之一;
  • C语言是一门面向过程的语言,非面向对象的语言。

C语言的优缺点

  • 优点:C语言有着丰富的数据类型和运算符,允许直接访问物理地址,对硬件进行操作;与汇编语言相比,C语言可读性好,易于调试、修改和移植;
  • 缺点:因为C语言是面向过程的,就是先分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用函数就可以了,因此它的数据封装性差、安全性低(面向对象语言的特性之一就是数据的封装性);语法限制不严格,对变量的类型约束不严格,对数组下标不做检查等。

C语言能做什么

  • 由于C语言具有丰富的数据类型,因此它适用于编写数据库软件(如Oracle、DB2)等;
  • 由于C语言具有强大的数据处理能力,而且允许直接访问物理地址,直接对硬件操作,因此它适于编写系统软件、图形处理、单片机程序、嵌入式系统开发等;
  • 很多操作系统的底层是用C语言写的,如Android、Linux,及后来用C语言重写的Unix等。

二、C程序代码分析

1.#include <stdio.h>

  • #include 是C语言的预处理指令之一,所谓预处理,就是在编译之前做的处理,预处理指令一般以 # 开头;
  • #include 指令后面会跟着一个文件名,预处理器发现 #include 指令后,就会根据文件名去查找文件,并把这个文件的内容包含到当前文件中。被包含文件中的文本将替换源文件中的 #include 指令,就像你把被包含文件中的全部内容拷贝到这个 #include 指令所在的位置一样;
  • 如果被包含的文件拓展名为.h,我们称之为"头文件"(Header File),头文件可以用来声明函数("函数"就是面向对象中的"方法"),要想使用这些函数,就必须先用 #include 指令包含函数所在的头文件;
  • #include 指令不仅仅限于.h头文件,可以包含任何编译器能识别的C/C++代码文件,包括.c,.hpp,.cpp等,甚至.txt,.abc等等都可以;
  • 要注意的是,为什么stdio.h用尖括号<>,而my.txt用双引号"" ?这个很好区别,如果是系统自带的文件,最好用<>;如果是开发人员自己创建的文件,最好用""。

2.main函数

  • 一个C程序有且仅有一个main函数,它是整个C程序的入口;
  • main函数的返回值为int类型,接收2个参数,其实可以不写参数;
  • main函数也可以不写返回值类型,但并不代表函数没有返回值,而是表示返回值类型为int类型,void才代表函数没有返回值,这是由于C语言的语法限制不严格。

3.stdio.h

  stdio.h是C语言函数库中的一个头文件,里面定义了一些标准输入输出函数。

二、开发和运行C程序的步骤

  步骤图如下:

1.编写程序

  C语言源文件的扩展名为".c",源文件以ASCII码形式存储,不能直接被计算机执行,因为计算机只能识别二进制指令,也就是0和1。

2.编译(VC环境下)

  • 把C的源程序翻译成计算机可以识别的二进制形式的目标代码文件,这个过程称为编译,由C的编译器完成;
  • 在编译的同时,还对源程序的语法等进行检查。若出现语法错误,则编译失败。如果编译成功则生成目标文件,目标文件名跟源程序文件名一样,扩展名为".obj"。比如,mj.c编译后生成目标文件mj.obj;
  • 每个源文件是单独进行编译的,假如一个项目中有多个.c源文件,编译成功会生成多个对应的.obj目标。一般情况下,目标文件之间是有关联的,比如 a.obj 可能会调用 b.obj 中定义的一个函数,因此它们都不能够单独被计算机执行,而且目标文件中并不包含程序运行所需要的库函数等。

3.链接(VC环境下)

  • 将所有有关联的obj目标文件,以及系统提供的C库函数等组合在一起生成可执行文件的过程,称为"链接";
  • 链接生成的可执行文件的文件名跟源程序文件同名,扩展名为".exe",计算机可以直接执行。

4.运行

  • * 如果是在Windows环境下,直接双击".exe"文件即可运行C语言程序。

5.总结

  • 1.在编译前先执行#include指令,拷贝stdio.h的内容到源程序中;
  • 2.编译源程序,生成目标文件;
  • 3.链接C语言函数库,生成可执行文件;
  • 4.运行可执行文件,在屏幕上输出"Hello, World!"。

三、C语言中的函数

(1)函数的分类

  C语言的函数大概可以分为3类:

  • 1.主函数,也就是main函数。每个程序中只能有一个、也必须有一个主函数。无论主函数写在什么位置,C程序总是从主函数开始执行
  • 2.开发人员自定义的函数,可有可无,数目不限
  • 3.C语言提供的库函数,例如stdio.h中的输出函数printf()和输入函数scanf()

(2)函数的声明和定义

  • 1.在标准C语言中,函数的定义顺序是有讲究的,默认情况下,只有后面定义的函数才可以调用前面定义过的函数。
  • 2.如果想把其他函数的定义写在main函数后面,而且main函数能正常调用这些函数,那就必须在main函数前面作一下函数的声明。
  • 3.在大型的C程序中,为了分模块进行开发,一般会将函数的声明和定义(即实现)分别放在2个文件中,函数声明放在.h头文件中,函数定义放在.c源文件中。

(3)函数的形参和实参

  在定义函数时,函数名后面的()中定义的变量称为形式参数(形参);在调用函数时传入的值称为实际参数(实参)。

时间: 2024-10-12 13:57:53

C语言知识整理(1):简介的相关文章

【转】C语言知识整理(3):内存管理(详细版)

原文链接:http://www.cnblogs.com/yif1991/p/5049638.html 在计算机系统,特别是嵌入式系统中,内存资源是非常有限的.尤其对于移动端开发者来说,硬件资源的限制使得其在程序设计中首要考虑的问题就是如何有效地管理内存资源.本文是作者在学习C语言内存管理的过程中做的一个总结,如有不妥之处,望读者不吝指正. 一.几个基本概念 在C语言中,关于内存管理的知识点比较多,如函数.变量.作用域.指针等,在探究C语言内存管理机制时,先简单复习下这几个基本概念: 1.变量:不

数据库知识整理

关系型数据库知识整理: 一,关系型数据库管理系统简介: 1.1使用数据库的原因: 降低存储数据的冗余度 提高数据的一致性 可以建立数据库所遵循的标准 储存数据可以共享 便于维护数据的完整性 能够实现数据的安全性 1.2基本概念: 对于任何数据库来说,表之间的关联关系存在三种基本的关系类型:一对一,一对多,多对多仅此三种. 目前流行的关系型数据库服务器管理系统有:微软-MS SQL Server.甲骨文-Oracle.IBM-DB2.开源的MySql和PostgreSQL等.(在面试中有被问到过)

MYSQL数据库常用知识整理

Evernote Export MYSQL数据库常用知识整理 什么是MYSQL MYSQL的特性 MYSQL存储引擎的分类以及数据文件的介绍 MYSQL赋权 MYSQL备份与恢复 MYSQL的基本操作:增删查改 MYSQL的基本故障判断与处理 MYSQL的调优 MYSQL主主.主从复制的实现 MYSQL大数据备份和恢复 数据文件的损坏与修复 什么是MYSQL MySQL 是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.目前MySQL被广泛地应用在Internet上的中

DIV+CSS网页布局常用的一些基础知识整理

CSS命名规范一.文件命名规范 全局样式:global.css:框架布局:layout.css:字体样式:font.css:链接样式:link.css:打印样式:print.css: 二.常用类/ID命名规范页 眉:header内 容:content容 器:container页 脚:footer 版 权:copyright 导 航:menu主导航:mainMenu子导航:subMenu 标 志:logo标 语:banner标 题:title侧边栏:sidebar 图 标:Icon注 释:note

WIFI基本知识整理

WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总结和整理,便于后续的学习.因为无线网络中涉及术语很多,并且许多协议都是用英文描述,所以有些地方翻译出来会有歧义,这种情况就直接英文来描述了. 主要内容: 一.基本概述 二.实践基础 三.一些原理 四.补充 五.其它 一.基本概述 ============================ 1.有线和无线网络 目前有线网络中最著名的是以太网(Ethenet),但是无线网络WLAN是一个很有前景的发展领域,虽然可能不会

Kali Linux渗透基础知识整理(二)漏洞扫描

Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网络上传输的数据量. TCP协议 TCP是因特网中的传输层协议,使用三次握手协议建立连接.当主动方发出SYN连接请求后,等待对方回答SYN+ACK ,并最终对对方的 SYN 执行 ACK 确认.这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议. 连接建立 TC

C# 基础知识 (四).C#简介及托管代码

        暑假转瞬即逝,从10天的支教生活到1周的江浙沪旅游,在这个漫长的暑假中我经历了很多东西,也学到了很多东西,也认识到了很多不足之处!闲暇之余我准备重新进一步巩固C#相关知识,包括C#入门知识.C#并行开发.ASP网站等.这篇文章我介绍的是书籍--C#入门经典(Beginning C#) 作者Karli Watson.主要包括的是我自己缺乏的一些C#简介知识和托管代码的内容.内容比较简单,参照该书籍较多,相当于自己的在线笔记!                             

计算机硬件知识整理

计算机硬件知识整理 一.编程语言的作用 编程语言,就是让计算机为解决某个问题,而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程.为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路通过计算机能够理解的形式告诉计算机,这种人和计算机之间交流的过程就是编程. 目前的主要编程语言有,Java, C, C++, Python, PHP, Pearl等. 二. 编程语言的作用及与操作系统和硬件的关系 操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件的计

tcp_wrapper知识整理

tcp_wrapper知识整理 一.tcp wrapper简介 tcp wrapper是一种访问控制工具,类似于iptables可以作访问控制. tcp wrapper只能对基于tcp协议的服务作访问控制,但并不是所有基于tcp协议的服务都能实现用tcp wraper作访问控制. tcp wrapper实现访问控制主要依靠两个文件,一个是/etc.hosts.allow文件,另一个是/etc/hosts.deny文件.从文件的名字上可以理解:一个是定义允许的,一个是定义拒绝的.那这两个文件生效的