C语言学习笔记

一、初识C语言

C语言的起源和发展以及它的特点可以用下面的思维导图总结:
C语言思维导图

C语言的起源

1972年,贝尔实验室的丹尼斯·里奇(Dennis Ritch)和肯·汤普逊(Ken Thompson)在开发UNIX操作系统时设计了C语言。

C语言的优点

  1. 设计特性
    C语言的设计理念让用户能够轻松地完成自顶向下的规划、结构化编程和模块化设计。因此,用C语言编写的程序更易懂、更可靠。
    1. 高效性
      C程序相对更加紧凑,运行速度很快。C语言具有通常是汇编语言才具有的微调控制能力,可以根据具体情况微调程序以获得最大运行速度或最有效地使用内存。
    2. 可移植性
      C 是可移植的语言。在一种系统中编写的C程序稍作修改或不修改就能在其他系统上运行。如需修改,也只需简单更改主程序头文件中的少许项即可。
    3. 强大而灵活
      Windows、Unix、Linux 操作系统都是用C语言编写的,其他语言的许多编译器和解释器都是用C语言编写的。C程序可以用于解决物理学和工程学的问题,甚至可用于制作电影的动画特效。
    4. 面向程序员
      利用C 可以访问硬件、操控内存中的位。
      面向过程:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
    5. 缺点
      C语言的编写过程中,你可能会犯一些不可能在其他语言中出现的错误。
      C语言紧凑简介,结合了大量的运算符。因此,会编写出让人及其费解的代码。

C语言的标准

公认的的C标准是1978年,布莱恩·柯林汉(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)合著的The C Programming Language。

  1. 第一个ANSI/ISO C 标准
    美国国家标准协会(ANSI)1989年正式公布C89
    国际标准化组织1990年采用这套标准,因此也可以叫做C90。
  2. C99标准
    1994年,ANSI/ISO联合委员会开始修订C标准,最终发布了C99标准。
  3. C11标准
    2011年发布C11标准。
    修订标准的原因不是因为原标准不能用,而是需要跟进新的技术。

使用C语言的7个步骤

  1. 定义程序的目标
    动手写程序之前,要先想清楚自己需要程序实现什么功能以及程序需要哪些信息,要进行那些计算和控制等。
  2. 设计程序
    用文字或则流程图把实现程序需要解决的问题步骤表达出来。
  3. 编写代码
    把自己设计好的解决问题的思路,翻译成C语言。
  4. 编译
    编译器是把源代码转换成可执行代码的程序。可执行代码使用计算机的机器语言表示的代码。
  5. 运行程序
    运行编译生成的可执行文件。
  6. 测试和调试程序
    程序中的错误叫做bug。查找并修复程序错误的过程叫调试。
  7. 维护和修改代码
    程序有错或者想要扩展程序的用途时需要修改程序。

编程机制

C编程的基本策略是,用程序把源代码文件转换为可执行文件(其中包含可直接运行的机器语言代码),通过编译链接两个步骤完成。编译器把源代码转换成中间代码,链接器把中间代码和其他代码合并,生成可执行文件。
中间文件有多种形式,最普遍的一种形式,即把源代码转换为机器语言代码,并把结果发那个到目标代码文件
目标代码文件缺失启动代码(startup code)。启动代码充当着程序和操作系统之间的接口。
目标代码还缺少库函数。函数的代码存储在库文件中。
链接器的作用是,把编写的目标代码、系统的标准启动代码和库代码这3部分合并成一个文件,即可执行文件。

练习题

  1. 对于编程而言,可移植性意味着什么
    程序设计语言的可移植性就是指通过编译器,将源代码编译、生成对应目标系统的可执行程序。

  2. 源代码文件、目标代码文件和可执行文件有什么区别
    源代码文件是指由高级程序语言编写的指令文件。
    编译器把源代码编译成叫做目标代码的中间代码文件,然后把目标代码,启动代码和库代码链接起来生成可执行文件。

  3. 编程的7个主要步骤是什么
    1)定义程序的目标
    2)设计程序
    3)编写代码
    4)编译
    5)运行程序
    6)检测和调试程序
    7)维护和调试程序

  4. 编译器的任务是什么
    编译器的任务就是把源代码编译成叫做目标代码的中间代码文件,然后把目标代码,启动代码和库代码链接起来生成可执行文件。

  5. 链接器的任务是什么

    链接器的作用是,把编写的目标代码、系统的标准启动代码和库代码这3部分合并成一个文件,即可执行文件。

  6. 需要一个把英寸转换成厘米(1 in = 2.54cm )的程序。该程序需要提示用户输入英寸值。完成编程过程的第一和第二步。
    程序目标:实现一个英寸到厘米的转换工作。
    设计程序:
    1)用户通过键盘输入需要转换的英寸数值。
    2)程序通过读取用户的键盘输入,获取英寸值。
    3)程序通过1 in = 2.54cm公式,将英寸转换成厘米。
    4)计算机将转换得到的结果反馈给用户。
    5)程序结束或者等待用户的下一次输入。

二、C语言概述

知识点总结

C程序示例

#include<stdio.h>
int main(void)			/*一个简单的C程序*/
{
   
	int num;			/*定义一个名为num的变量*/
	num = 1;			/*为num赋一个值*/

	printf("I am a simple ");	/*使用printf()函数*/
	printf("Computer.\n");
	printf("My favorite number is %d because it is first.\n",num);
	return 0;
}

示例解释

示例解释

快速概要

#include<stdio.h>  /*该行告诉编译器把stdio.h中的内容包含在当前程序中。*/

这行代码是一条C预处理器指令(preprocessor directive )。通常,C编译器在编译之前会对源代码做一些准备工作,即预处理(preprocessing)。
所有C编译器软件包都提供stdio.h文件。该文件中包含了供编译器适用的输入和输出函数信息。该文件名的含义是标准输入/输出头文件。通常,在C程序顶部的信息集合被称为头文件(header)。
PS:#include中的#符号表明,C预处理器在编译器接手之前处理这条指令。

int main(void)  /*函数名*/

C程序一定从main()函数开始执行。圆括号表明main()是一个函数名。int 表明main()函数返回一个整数,void表明main()不带任何参数。

/* 一个简单的C程序*/

在程序中被/* */两个符号括起来的部分是程序的注释。
// 这种注释只能写成一行。

{         }

一般而言,所有的C函数都是用花括号标记函数体的开始和结束。花括号还可用于把函数中的多条语句合并为一个单元或块。

int num;     //声明(declaration)

该声明表明,将使用一个名为num的变量,并且num是int(整数)类型。
int 是C语言的一个关键字(keyword)。关键字是语言定义的单词,不能做其他用途。
num 是一个标识符(identifier)。声明把特定标识符与计算机内存中的特定位置联系起来,同时也确定了储存在某位置的信息类型或数据类型。
在C语言中,所有变量都必须先声明才能使用。这意味着必须列出程序中用到的所有变量名及其类型。
变量可以用小写字母、大写字母、数字和下划线(_)来命名。而且,名称的第一个字符必须是字符或下划线,不能是数字。C语言的名称区分大小写。
声明变量的4个理由

  • 把所有的变量放在一处,方便读者查找和理解程序的用途。如果变量名都是一看就懂的字面意思,效果会很好。如果变量名无法表述清楚,在注释中解释变量的含义。
  • 声明变量会促使你在编写程序之前做一些计划。
  • 声明变量有助于发现隐藏在程序中的小错误,如变量名拼写错误。
  • 如果事先未声明变量,C程序将无法通过编译。
num = 1;   //赋值表达式语句

赋值表达式语句从右侧把值赋到左侧。C语言是通过赋值运算符而不是赋值语句完成赋值操作的。

printf("I am a simple ");    //调用一个函数

函数由函数头和函数体组成。函数头包括函数名、传入该函数的信息类型和函数的返回类型。
函数体被花括号括起来。函数调用本身是一个表达式,圆括号是运算符,圆括号左边的函数名是运算对象。

函数定义

#include<stdio.h>
void butler(void);  // 函数原型
int main(void)
{
	butler();  //函数调用
}
void butler(void)   //函数定义
{
	printf("hello“);
}

函数原型是一种声明形式,告知编译器正在使用某函数,因此函数原型也被称为函数声明(function definition)。
函数原型还指明了函数的属性。

void butler(void);

第一个void表明,butler()函数没有返回值。第二个void的意思是butler()函数不带参数。
何时执行butler&#

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平生一蓑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值