【第一章】C语言概论

目录

前言

安装相应的开发工具

C语言的特点 

C语言32个关键字 

C程序介绍

运行C程序的完整步骤 

 宏定义

定义常量

定义函数宏

带参数的宏定义

文件包含

小结


前言

欢迎来到C语言的世界,C语言因为具有强大的功能而受到编程人员的欢迎。

C语言产生于20世纪70年代,由美国贝尔实验室的Dennis Ritchie在PDP-11计算机上开发而成。当时,贝尔实验室正在开发一种新的操作系统,称为UNIX。为了更好地开发和维护UNIX,Ritchie创建了C语言。

C语言的设计目标是为了提供一种高级语言,具有足够的表达能力和灵活性,同时又能够直接访问底层硬件,使程序员能够编写高效且可移植的代码。C语言采用了一种简洁而灵活的语法结构,具有强大的控制结构和指针操作能力。

C语言很快就获得了广泛的认可和应用。它不仅仅在UNIX系统中使用,还成为了其他操作系统和计算机平台的主流编程语言。C语言具有良好的可移植性和性能,使得它成为了编写系统软件、嵌入式系统和高性能应用程序的首选语言。

随着时间的推移,C语言不断发展壮大。在1989年,国际标准化组织(ISO)发布了C语言的第一个国际标准,称为C89或ANSI C。之后又发布了C99和C11标准,进一步完善了C语言的功能和特性。

同时,C语言的发展也催生了许多衍生语言,如C++、Objective-C和C#。这些语言在C语言的基础上增加了新的特性和功能,适用于不同的开发需求。

总的来说,C语言的产生和发展推动了计算机软件和硬件的发展,成为了现代编程语言发展的基石之一。

使用C语言进行开发的著名软件也非常多:

  1. 操作系统:Unix、Linux、Windows等操作系统的内核大部分都是用C语言编写的。

  2. 编译器和解释器:著名的编译器和解释器如GCC、LLVM、Python等都是使用C语言开发的。

  3. 数据库系统:MySQL、PostgreSQL、SQLite等数据库系统的核心组件都是用C语言编写的。

  4. 网络协议栈:TCP/IP协议栈和各种网络相关的库如libcurl、libpcap等也是用C语言编写的。

  5. 图形库:常用的图形库如OpenGL、SDL等也是使用C语言开发的。

  6. 嵌入式系统:许多嵌入式系统的驱动程序和底层软件都是用C语言编写的。

  7. 数据分析和科学计算:著名的科学计算库如NumPy、SciPy等也是使用C语言编写的。

  8. 视频游戏:许多知名的游戏引擎如Unity、Unreal Engine等也是使用C语言进行开发的。

这只是列举了部分使用C语言进行开发的软件,实际上还有很多其他的软件也是用C语言编写的。


安装相应的开发工具

首先在学习之前我们要准备好工具,安装好对应的开发工具并调试好它。我们为你准备了详细的安装和配置教程,请点击下方链接来迈出自己的第一步吧。

【C语言】【DEV-C++】入门教学icon-default.png?t=N7T8https://blog.csdn.net/2201_75927280/article/details/139154514


C语言的特点 

归纳整理起来,C语言的特点包括:

  1. 高度可移植性:C语言是一种中级语言,可以在许多不同的操作系统和平台上运行。这使得程序员可以轻松地将他们的代码从一个系统转移到另一个系统。

  2. 高效性:C语言的代码执行速度非常快,因为它直接与计算机硬件进行交互。C语言允许程序员对内存和其他系统资源进行细粒度控制,从而能够创建高效的程序。

  3. 简洁性:C语言的语法相对简单明了,不需要过多的语法结构和规则。这使得程序员可以更快地理解和编写代码。

  4. 强大的指针支持:C语言提供了指针的功能,允许程序员直接访问和操作内存中的数据。这使得C语言在系统级编程和底层开发中非常有用。

  5. 丰富的库支持:C语言拥有大量的库文件,这些库提供了各种各样的函数和数据结构,可以帮助程序员快速编写各种类型的程序。

  6. 可扩展性:C语言允许程序员使用其他语言(如汇编语言)编写特定的功能和算法,从而扩展C语言的能力。

  7. 具有面向过程的编程风格:C语言主要支持面向过程的编程方法,注重功能的顺序和执行流程的控制。

  8. 广泛的应用领域:C语言广泛应用于系统级编程、嵌入式系统开发、游戏开发、驱动程序开发等领域。


C语言32个关键字 

C语言中的关键字是预定义的标识符,它们具有特定的含义和功能。关键字在C语言中起到了以下几个重要的作用:

  1. 语法规则:关键字定义了C语言的语法规则,指定了如何组织和编写代码。编译器会根据这些关键字来解析和理解源代码。

  2. 语义含义:关键字具有特定的语义含义,表达了特定的概念和操作。比如,关键字"int"表示整型数据类型,关键字"if"表示条件语句,关键字"for"表示循环语句等。

  3. 限定作用域:一些关键字用于限定作用域,如"static"用于限定变量或函数的作用域为当前文件,"extern"用于声明外部变量等。

  4. 禁用标识符:关键字作为预定义的标识符,不能用作用户定义的变量、函数或类型名称。这样可以避免与关键字冲突,保证代码的准确性。

总之,关键字是C语言的基本构成部分,它们定义了语法规则、语义含义和作用域等,是编写和解析代码的重要基础。以下是C语言的关键字:

auto 、breakcasechar、const、continuedefaultdodoubleelse、enum、extern、floatfor、goto、ifintlong、register、returnshort、signed、sizeof、static、structswitch、typedef、union、unsignedvoid、volatile、while


C程序介绍

相信大家已经认真学习过了《【C语言】【DEV-C++】入门教学》,那让我们详细了解一下程序的每一个部分和C程序的一些特点。

#include<stdio.h>
void main() {
	pirntf("Hello World\n");
}

上面的代码大家已经粗略的了解过了,甚至你可能已经成功的运行了出来,那每一行究竟代表什么意思呢?现在让我们来学习一下。 

上方的程序是使用C语言编写的一个简单的程序,它的功能是输出字符串"Hello World"到屏幕上。其中“#”开头的是预处理命令,“#include”指令的作用是命令C编译器包含某个特定文件的内容。“.h”称为头文件(Head files)。程序主体部分是一个名为main的函数,它是程序的入口点。在主函数内,通过调用printf函数来输出字符串"Hello World","\n"是表示换行的特殊字符。

现在让我们尝试写下第二个程序:求两个整数的和并输出。

#include<stdio.h>
void main() {
	int x,y,z;
	scanf("%d %d",&x,&y);
	z=x+y;
	printf("%d+%d=%d",x,y,z);
}

在程序运行框中输入12<空格>13<回车>会得到12+13=25的结果。

首先,程序包含了 `<stdio.h>` 头文件,该头文件包含了输入输出函数的定义。

然后,在 `main` 函数中,声明了三个整数类型的变量 `x`、`y` 和 `z`。

接下来,使用 `scanf` 函数从用户输入中读取两个整数值,并将它们存储在 `x` 和 `y` 变量中。`"%d %d"` 是控制输入格式的格式字符串,表示接受两个整数,两个整数之间用空格分隔。

然后,将 `x` 和 `y` 的值相加,将结果存储在 `z` 变量中。

最后,使用 `printf` 函数将结果打印出来。`"%d+%d=%d"` 是控制输出格式的格式字符串,表示打印两个整数相加的结果。`x`、`y` 和 `z` 分别用来替换格式字符串中的 `%d`。

所以一个C程序具有以下特点:

  1. 结构化编程:C语言强调结构化编程,即将程序划分为多个模块(函数),每个模块负责完成一个独立的任务,通过函数的调用和参数传递来实现模块之间的数据交互和控制流程。

  2. 高效性:C语言是一种底层语言,可以直接访问内存,提供了灵活的数据和控制结构,以及丰富的运算符,使得程序能够以高效的方式执行。

  3. 静态类型:C语言是一种静态类型的语言,需要在编译时确定变量的类型,并进行类型检查。这可以提前发现类型错误,增加程序的安全性和可靠性。

  4. 指针:C语言提供了指针的功能,使得可以直接操作内存地址,进行动态内存分配和高效的数据访问。指针是C语言中的重要概念,也是其灵活性和强大性的基础。

  5. 可移植性:C语言在不同操作系统和硬件平台上都能运行,这是因为C语言的标准库和头文件是与具体平台无关的。这使得C语言程序可以在不同环境上编写和运行,增加了程序的可移植性。

  6. 库支持:C语言提供了丰富的标准库和头文件,包含了各种常用的函数和数据结构,可以简化程序的编写过程,并提供了很多常用的功能。除了标准库,还可以使用第三方库来扩展C语言的功能。

  7. 低级别控制:C语言允许直接操作底层硬件,包括对内存的直接读写、位级操作等。这使得C语言非常适合底层系统开发和硬件驱动开发。


运行C程序的完整步骤 

运行一个C程序的完整步骤可以分为以下几个阶段:

  1. 编写程序:使用文本编辑器(如Notepad++、Sublime Text等)编写C程序代码,并保存为以.c为扩展名的文件。

  2. 编译程序:打开命令提示符(Windows系统)或终端(Linux/Mac系统),进入保存C程序的文件所在的目录。使用编译器(如gcc)对C程序进行编译,生成可执行文件。例如,在命令提示符中输入命令:gcc program.c -o program。

    编译器会对C程序进行词法分析、语法分析和语义分析,生成汇编代码和目标代码,最后将目标代码转换为可执行文件。

  3. 运行程序:在命令提示符中输入可执行文件的名称(例如program.exe),按下回车键即可运行程序。程序会按照代码中的逻辑进行执行,并输出结果或进行其他操作。

    如果C程序需要从标准输入读取数据,则在运行时会要求输入所需的数据。

  4. 调试程序(可选):在运行过程中,如果程序出现错误或逻辑问题,可以使用调试器(如gdb)对程序进行调试。调试器可以让你逐行执行代码,查看变量的值,以及进行其他调试操作,帮助你找到问题并修复。


 宏定义

C语言中的宏定义是一种预处理指令,用于在程序中定义一个标识符,该标识符会在编译过程中被替换为指定的文本。

宏定义的语法格式为:

#define 标识符 替换文本

其中,标识符是一个由字母、数字或下划线组成的标识符命名规则,替换文本是要替换的文本内容。

以下是一些常见的宏定义用法:

定义常量
#define PI 3.14159
定义函数宏
#define MAX(a, b) ((a) > (b) ? (a) : (b))

这个宏定义了一个取两个参数中较大值的宏。

带参数的宏定义
#define SQUARE(x) ((x) * (x))

这个宏定义了一个计算平方的宏,参数x会在宏展开时被替换。

宏定义的优点是能够简化代码、提高效率和灵活性。但是,宏定义也有其潜在的问题,例如宏定义没有类型检查,可能导致意外的副作用。在使用宏定义时,要注意避免出现这些问题,并根据实际情况选择是否使用宏定义。

现在让我们尝试求解梯形的面积

#include<stdio.h>
#define S(a,b,h) (a+b)*h/2.0
int main() {
	double y;
	y=S(2,3,5);
	printf("梯形面积=%f\n",y);
	return 0;
}

 上方代码是一个使用宏定义的简单梯形面积计算程序。

1. `#include<stdio.h>`:包含头文件`stdio.h`,该头文件包含了输入输出函数的声明。
2. `#define S(a,b,h) (a+b)*h/2.0`:使用宏定义定义了一个名为`S`的宏,该宏接受三个参数,分别为梯形的上底、下底和高,使用给定的公式计算梯形的面积。
3. `int main()`:主函数的开始。
4. `double y;`:声明变量`y`,用于存储计算得到的梯形面积。
5. `y=S(2,3,5);`:调用宏`S`,传入参数2、3和5,计算得到梯形的面积,并将结果赋值给变量`y`。
6. `printf("梯形面积=%f\n",y);`:使用`printf`函数输出梯形的面积值。
7. `return 0;`:主函数的结束,返回0表示程序正常运行结束。


文件包含

在C语言中,可以使用文件包含指令来引用其他文件中的代码,避免重复编写相同的代码片段。C语言中常用的文件包含指令是#include

#include指令的使用格式如下:

#include <文件名>

或者

#include "文件名"

文件名可以是系统库文件名,也可以是用户自定义的头文件名。

  • 如果用尖括号`<>`括起来,表示引用的是系统标准库文件,编译器会在系统的标准库文件目录中查找。
  • 如果用双引号`""`括起来,表示引用的是用户自定义的头文件,编译器会在当前目录中查找。

举个例子,假设有一个名为"header.h"的头文件,可以通过以下方式包含它:

#include <header.h> // 引用系统库文件

或者

#include "header.h" // 引用用户自定义头文件

文件包含指令的作用是将被引用文件的内容复制到当前代码文件中,使得被引用文件中的代码可以在当前文件中使用。这样可以实现代码的模块化和重用。


小结

当初步学习C语言时,有以下几个问题需要注意:

  1. 理解基本语法:学习C语言的第一步是了解其基本语法,包括变量的声明与赋值、数据类型、运算符、控制语句(如if语句和循环语句)等。要仔细学习并理解这些基础知识,以建立起对C语言程序的基本认知。

  2. 常见错误和警告:在写代码时,常常会遇到编译器发出的错误和警告信息。要学会读懂并修正这些错误和警告,以确保代码的正确性。

  3. 调试技巧:调试在学习C语言过程中是不可避免的。要学会使用调试工具和技巧,如printf语句调试、调试器的使用等,以帮助发现和解决代码中的问题。

  4. 掌握常用函数:C语言提供了许多常用的函数库,如stdio.h中的输入输出函数、stdlib.h中的内存管理函数等。要掌握这些常用函数的用法和功能,以便能够有效地编写C语言程序。

  5. 数组和指针:数组和指针是C语言中非常重要的概念。要理解数组和指针的概念和用法,并能够正确地使用它们处理数据。

  6. 内存管理:C语言中需要手动管理内存,包括内存的申请和释放。要学会使用malloc和free等函数来动态分配和释放内存,以避免内存泄漏和内存溢出的问题。

  7. 实践和项目:学习C语言最有效的方法是进行实践和项目。通过编写小项目或解决实际问题,可以更深入地理解C语言的概念和技巧,并提高自己的编程能力。

总之,学习C语言需要耐心和细心,通过大量的练习和实践来掌握语言的基本知识和编程技巧。同时也要学会查阅官方文档和相关学习资料,向更有经验的人请教问题,不断提高自己的编程能力。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

想睡觉....

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

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

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

打赏作者

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

抵扣说明:

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

余额充值