C语言学习笔记(一)

一、计算机和软件常识

1.计算机运行原理

1)硬件基本组成:硬盘、CPU、内存

2.计算机只能识别0和1

1)0和1组成的指令

2)0和1组成的数据

3.计算机和软件的联系

1)软件的基本概念:指令的集合

2)软件的安装运行过程:安装在硬盘,运行在内存

3)为什么要开发软件:写出能控制计算机的指令

4.计算机语言

1)一门跟计算机打交道的语言

2)方便写出一连串的指令

二、计算机语言的发展史

1.机器语言

1)简介

所有代码里面只有0和1,每一条指令称为“机器指令”。

2)优点:

※代码能被计算机直接识别,直接对硬件产生作用,程序的执行效率非常高。

※能直接访问、控制计算机的各种硬件设备,如:磁盘/CPU/I/O端口等

3)缺点:

※程序全部是由0和1组成的指令代码,可读性差,还容易出错。

※对硬件的依赖性很强,因此不同型号计算机的机器语言又不一样。也就是说,如果2台不同型号的机器想实现一样的功能,需要编写2套完全不同的代码。

※要熟记所用计算机的全部指令和指令的涵义,指令又多又难记。

4)使用场合

综上所述,机器语言很难掌握和推广,现在除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。

2.汇编语言

1)简介

用英文单词等符号代替机器指令。

2)优点:

※ 像机器语言一样,可以直接访问、控制计算机的各种硬件设备

※占用内存少,执行速度快

3)缺点:

※不同的机器有不同的汇编语言语法和编译器,代码缺乏可移植性,也就是说,一个程序只能在一种机器上运行,换到其他机器上就不能运行

※符号非常多、难记,即使是完成简单的功能也需要大量的汇编语言代码,很容易产生BUG,难于调试

※必须对硬件非常了解,开发效率很低,周期长且单调

4)使用场合

※操作系统内核、驱动程序、单片机程序

※软件的加密、解密、破解

※病毒的制作、防治

※程序的调试、分析

3.高级语言

1)简介

接近自然的语言

2)优点

※简单、易用、易于理解,语法和结构类似于普通英文

※远离对硬件的直接操作,使得一般人经过学习之后都可以编程,而不用太熟悉硬件知识

※一个程序还可以在不同的机器上运行,具有可移植性

3)缺点

※程序不能直接被计算机识别,需要经编译器翻译成二进制指令后,才能运行到计算机上

4)种类

C语言、C++、C#、Java、Objective-C等

三、C语言简介

1.学习C语言的原因

1)OC 基于 C

2)OC 跟 C 的思想和语法很多地方不大一样,而且OC能和C混用。

3)C 是所有汇编语言中的经典,很多高级语言都是从C语言中衍生出来的,如JAVA,C++,C#,Objective-C等。

2.简史

1)C语言于1972年发明,首次使用时用于重写UNIX系统。因为UNIX以前主要是用汇编语言写的,调试起来比较困难,它奠定了操作系统的基础。

2)随着UNIX操作系统的成功,C语言也得到了大幅度地推广,被先后使用到大、中、小、微型主机上,至今还是世界上最流行、使用最广泛的高级程序设计语言之一

3)C语言是一门面向过程的语言,非面向对象的语言

3.特点

1)丰富的运算符

2)丰富的数据类型

3)可以直接操作硬件

4)高效的目标代码

5)可移植性好

4.主要用途

1)编写系统软件、图形处理、单片机程序、嵌入式系统开发

2)编写游戏外挂

3)编写android程序

4)编写iOS程序

......

5.版本问题

1)1983年美国国家标准局(American
National Standards Institute,简称ANSI)成立了一个委员

会,开始制定C语言标准的工作

2)1989年C语言标准被批准,这个版本的C语言标准通常被称为ANSI
C/C89

3)1999年,国际标准化组织ISO又对C语言标准进行修订,在基本保留原来C语言特征的基础上,针对应该

的需要,增加了一些功能,命名为C99

4)2011年12月8日,ISO正式公布C语言新的国际标准草案:C11

四、第一个C语言程序

1.开发工具的选择

可以用来写代码的工具:记事本、UltraEdit、Vim、Editplus、Eclipse等都可以,到底只是一个编写代码的工具而已。

2.代码的编写

1)程序结构

C语言的结构:由函数组成。

任何一个C语言程序都是由一个或多个程序段构成的,每个程序段都有自己的功能,这个程

序段称为“函数”,所以说C语言程序是由函数组成的。

2)函数的基本概念

函数名:一个程序由无数个函数组成,每个函数都有自己的名称。

调用/执行函数:根据函数名就可调用函数,执行相关的功能。

3)C程序的入口

C程序的入口是一个名字叫做main的函数,简称main函数。

不管整个程序有多少个函数,都是先执行main函数的。

3.编译

1)什么是编译?

将C源程序编译成计算机能识别的0和1.

2)使用什么编译器?

将自己写的源代码,编译成由0和1组成的二进制文件。

如果代码中有语法问题,编译器会直接报错,并直接指出错误的个数和具体行号。

只要有1个错误,程序就不能编译成功,也不会生成.0文件。

警告信息只是编译器的一些建议,并不影响编译通过。

4.链接

1)链接的作用:将.o文件和C语言函数库组合在一起,生成可执行文件。

2)由连接器完成,一般在编译器里面已经包含了链接指令。

在终端中输入:cc 文件名.o

链接成功后,Mac OS X系统会生成a.out可执行文件/windows下链接成功后生成a.exe文件

5.运行

1)运行方式

Mac OS X:./a.out指令

Windows:a.exe指令

2)修改文件内容后,一定要重新编译、链接、在运行。

3)\n的作用,回车换行

6.搭建开发环境

CLI 模式:Windows Console + MinGW(GCC + GDB + MAKE)+ VIM(for win32 console)

下载MinGW软件,在环境变量Path值最后添加:;D:\MinGW\bin

7.其它clang指令

修改可执行文件名称:cc xxx.o -o 文件名

一起编译、链接:cc xxx.c

8.初学者常见错误

1)不写分号、用了中文分号

2)字符串少了双引号、或者用了单引号、或双引号里面又有双引号

3)代码没有写在main函数内部、return之前

4)文件扩展名不是.c 或 .C

5)用绝对路径编译文件,注意目标文件生成的地方。

9.总结

1)整个程序的运行过程

2)总结常见文件的扩展名

.c :     c语言源文件,在编写代码时创建

.o :     目标文件,编译成功后产生

.out/.exe :   可执行文件,在链接成功后产生

3)总结 clang指令

编译: cc -c xx.c

链接: cc xx.o

编译、链接: cc xx.c

运行可执行文件: ./a.out或a.exe

4)开发中遇到哪些错误,如何解决?

语法错误:可以通过编译器的报错信息解决

逻辑错误:需要耐心调试程序

10.Windows cmd指令

上面的一些指令都是在Mac OS X 系统下的指令。

实际上自己使用的是Windows系统,操作指令:

编译:gcc first.c,生成first.o文件

链接:gcc first.o,生成a.exe文件,文件名默认是a.exe

编译并链接: gcc first.c -g -o first.exe,生成first.exe文件。这里指定了生成后的文件名。

运行:first.exe/a.exe,将运行程序,将结果打印字控制台上。

因为最近在学习C语言,就把笔记写到博客上了!

时间: 2024-11-19 04:21:35

C语言学习笔记(一)的相关文章

Perl语言学习笔记 9 正则表达式处理文本

1.替换 s/PATTERN/REPLACE/; #返回是否替换成功的布尔值 可以使用捕获变量,如:s/(\w)/$1/ 匹配失败则不做任何处理 2.定界符 对于没有左右之分的定界符,重复三次即可,如:s///.s### 对于有左右之分的定界符,需使用两对,一对包含模式,一对包含替换字符串,这两对可以不一样,如:s{}{}.s[]{}.s<>[] 3.可选修饰符 /g可进行全局替换,替换所有匹配到的字符串,如:s/ / /g /s:使得 . 匹配所有字符 /i:大小写无关 4.绑定操作符 $f

Perl语言学习笔记 6 哈希

1.哈希的键是唯一的,值可以重复! 2.访问哈希元素 $hashname{"$key"};#哈希为大括号,数组为方括号,键为字符串 $family_name{"fred"} = "firstd";#给哈希元素赋值 3.哈希键支持任意表达式 $foo = "na"; $family_name{$foo."me"};#获取$family_name{"name"}对应的值 4.访问整个哈希 %

JavaScript--基于对象的脚本语言学习笔记(二)

第二部分:DOM编程 1.文档象模型(DOM)提供了访问结构化文档的一种方式,很多语言自己的DOM解析器. DOM解析器就是完成结构化文档和DOM树之间的转换关系. DOM解析器解析结构化文档:将磁盘上的结构化文档转换成内存中的DOM树 从DOM树输出结构化文档:将内存中的DOM树转换成磁盘上的结构化文档 2.DOM模型扩展了HTML元素,为几乎所有的HTML元素都新增了innerHTML属性,该属性代表该元素的"内容",即返回的某个元素的开始标签.结束标签之间的字符串内容(不包含其它

R语言学习笔记2——绘图

R语言提供了非常强大的图形绘制功能.下面来看一个例子: > dose <- c(20, 30, 40, 45, 60)> drugA <- c(16, 20, 27, 40, 60)> drugB <- c(15, 18, 25, 31, 40) > plot(dose, drugA, type="b") > plot(dose, drugB, type="b") 该例中,我们引入了R语言中第一个绘图函数plot.pl

Go语言学习笔记(一) : 搭建Windows下的Go开发环境

最近突然对Go语言产生了兴趣,主要是因为在使用python的时候遇到了一些不爽的问题,然后发现了Go.Go是Google出的一个动态语言,语法和C++接近,性能也非常的好,而且还支持编译成exe发布,并且不依赖任何虚拟机(其实是打包在exe里面了),这种好语言怎么能够错过?所以便一时兴起,开始学习了起来.由于本人还处于异常小白的阶段,所以文章中可能不免有些错误,欢迎大家各种指正. 安装Go 前往Go语言的官方网站:http://golang.org/, 下载对应平台的安装包.如果是x86的系统可

Perl语言学习笔记 15 智能匹配与give-when结构

1.智能匹配操作符 替代绑定操作符: 在哈希中查找某一个键: 比较两个数组是否完全相同: 查找列表中是否存在某个元素: 智能匹配操作符与顺序无关,~~ 左右元素可以互换 2.智能操作符优先级 3.given语句 相当于c语言的switch语句 4.given可以测试多个条件,在default前用break,否则会导致default一直执行 5.笨拙匹配(正则表达式方式) 6.多个项目的when匹配 可以在语句中间加上其他语句: Perl语言学习笔记 15 智能匹配与give-when结构,布布扣

R语言学习笔记

參考:W.N. Venables, D.M. Smith and the R DCT: Introduction to R -- Notes on R: A Programming Environment for Data Analysis and Graphics,2003. http://bayes.math.montana.edu/Rweb/Rnotes/R.html 前言:关于R 在R的官方教程里是这么给R下注解的:一个数据分析和图形显示的程序设计环境(A system for data

Perl语言学习笔记 day 1

1.Perl Practical Extraction and Report Language:实用摘录与报表语言 2.多行注释 (1) =需要顶格写 = description statement; =cut (2)末尾的description需要顶格写 <<description; print "Hello,world!\n"; description 3.数字: 所有数字在Perl内都以双精度浮点数格式存储; 5**3:5*5*5: 4.字符串: 最短的字符串为空字符

JavaScript--基于对象的脚本语言学习笔记(三)

事件处理器 1.一个数据校验表单的例程 <html> <head> <title>js练习</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript"> String.prototype.trim=function(){ r

Perl语言学习笔记 10 其他控制结构

1.unless控制结构 条件为假时执行,与if相反 可以附带else 2.Until控制结构 条件为假时执行,一直执行到条件为真: 3.条件修饰词 效果等同于: 类似的模式: 4.裸块控制结构 { body; body; .... } 有利于为临时变量圈定有效范围 5.elsif子句 6.自增.自减 同c语言 7.for 用法同c语言 8.for与foreach 在perl中,两者等价,优先选择纯正的foreach 9.5种循环块:for.foreach.while.until.裸块 last