C语言入门:如何用七个部分写一个简单的程序
C语言是一种通用的、结构化的、高效的编程语言,它可以用来开发各种应用程序,如操作系统、数据库、图形界面、网络通信等。
一个简单的C语言程序由以下几个部分组成:
1、预处理指令:以#开头的指令,用来告诉编译器在编译之前要执行的操作,如包含头文件、定义宏等。例如,#include <stdio.h>表示要包含标准输入输出库的头文件。
2、函数:C语言程序的基本单位,用来实现特定的功能。每个函数由函数名、参数列表、返回类型和函数体组成。例如,int main()是一个函数,它是C语言程序的主函数,也是整个程序的入口点,表示程序从这里开始执行。
3、变量:用来存储数据的标识符,每个变量都有一个类型,表示它可以存储的数据范围和格式。例如,int a = 10;表示定义了一个整型变量a,并赋值为10。
4、常量:不可改变的数据,可以是字面量,如数字、字符、字符串等,也可以是用const修饰的变量。例如,const double PI = 3.14;表示定义了一个常量PI,并赋值为3.14。
5、表达式:由运算符和操作数组成的有值的语句,用来计算或赋值。例如,a + b是一个表达式,表示将a和b相加的结果。
6、语句:由分号结束的表达式或控制结构,用来实现程序的逻辑。例如,printf(\”Hello, world!\\n\”);是一个语句,表示输出一行文字到屏幕上。
7、注释:以/开头,以/结尾的文本,或者以//开头的单行文本,用来说明程序的功能或目的,不会被编译器执行。例如,/* This is a comment */或者// This is also a comment都是注释。
下面是一个简单的C语言程序的例子:
#include <stdio.h> // 包含标准的输入/输出/定义主函数
int main() // 定义一个主函数
{ int a = 10; // 声明并初始化一个整数变量 int b = 20; // 声明并初始化另一个整数变量
int c = a + b; // 声明并初始化第三个整数变量,并将第一个变量和第二个变量的数值相加存到第三个变量内
printf(\”The sum of %d and %d is %d\\n\”, a, b, c); //将结果打印到屏幕上 return 0; // 返回0表示程序成功结束}
C语言入门书籍推荐
05年上大一的时候开始学C语言,当时用的教材是谭浩强版的《C语言程序设计》,[狗头],这本书真是应试教育的典范,填鸭式的内容,夹杂着各种错误,本该重点描述的地方浅尝辄止,各种吐槽点……
工作这么多年,到目前为止读了不少C相关的书籍。在走了很多弯路以后,个人认为一个正确的C语言的学习的路径应该为,
- 在学习编程语言之前,建议先了解什么是计算机,可以观看《Crash Course Computer Science》;
- 安装一个linux系统,现在已经越来越方便了,比如,可以在win11上安装wsl2和ubuntu,学习一些linux的基础命令;
- 了解操作系统的基本原理,什么是进程、线程,编译、链接的基本原理,应用程序是如何运行的;
- 学习gcc,gdb的基本使用命令(初期最好不要使用集成开发环境,例如visual studio,clion等强大的IDE去编写程序,建议直接命令行),结合预编译、编译、汇编、链接等指令去更深入的了解程序运行的原理,利用gdb去调试代码;
- 学习一门基础语言,如果是第一门编程语言,那肯定是C,它应用广泛,操作系统(系统编程)、驱动、编译器开发、网络编程(socket)、音视频、游戏、GUI(部分组件)、嵌入式等等都是它的擅长领域,在编程语言中一直排名前3。它足够经典及精炼,执行效率高,占用内存少,可以“直接”和计算机硬件打交道,能更深一步的了解计算机的软硬件运行原理;
- 学习cmake的基础语法及命令,因为目前大部分的开源C/C++代码都支持cmake编译;
- 在掌握了一门基础语言后,学习对应的数据结构、算法、设计模式等。在这个阶段多去读一些开源的优秀源码,从小项目到大项目,学以致用,去学习优秀的大牛们是如何设计软件,如何利用简单的c语言去编写出优雅的代码;
- 最后,在自己感兴趣的特定领域,例如网络编程,去学习一些已有的广泛使用的第三方库的使用。然后,去写一些现实中实际可以用的程序;
下面是我认为比较好的一些C语言书籍的推荐:
该书由计算机科学家Brian Kernighan和C语言之父Dennis Ritchie合著,是第一部介绍C语言编程方法的书籍。它因作者名字的缩写被简称为K&R;或是因封面颜色,也被称为白皮书。在C语言的发展和普及过程中起到了非常重要的作用,被视为是C语言的业界标准规范,而且至今仍然广泛使用。它被公认为计算机技术著作的典范,以清晰简洁的文字讲述而著称。书中用\”hello world\”为实例开始讲解程序设计,成为程序设计语言图书的传统。
相比于K&R,这本书更贴近于实际的应用,也更“现代”,适合进阶使用,所讲述的知识点都是干货,几乎没有废话。本书主要目的就是通过一种“现代方法”来介绍C语言,书中强调标准C,强调软件工程。第2版修订版中不仅有C99中的新特性,还与时俱进地增加了C11和C18中的内容。本书分为C语言的基础特性、C语言的高级特性、C语言标准库和参考资料4个部分。每章末尾的“问与答”部分给出一系列与该章内容相关的问题及答案,带着读者去思考,作者的水平真的是很高。
当你有一定的编程基础后,建议开始读《深入理解计算机系统》这本书,多读几遍,这本书“很硬”,每次读完的感受应该都不同。本书从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性、性能和实用性。全书共12章,主要内容包括信息的表示和处理、程序的机器级表示、处理器体系结构、优化程序性能、存储器层次结构、链接、异常控制流、虚拟存储器、系统级I/O、网络编程、并发编程等。书中提供大量的例子和练习,并给出部分答案,有助于读者加深对正文所述概念和知识的理解。
本书的最大优点是为程序员描述计算机系统的实现细节,帮助其在大脑中构造一个层次型的计算机系统,从最底层的数据在内存中的表示到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户态应用。通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更好地理解程序的行为为什么是这样的,以及效率低下是如何造成的。
如下是kitware官网的介绍,cmake现在确实已经成为了c/c++软件系统的常用构建工具,
CMake: A Powerful Software Build System CMake is the de-facto standard for building C++ code, with over 2 million downloads a month. It’s a powerful, comprehensive solution for managing the software build process. Get everything you need to successfully leverage CMake by visiting our resources section.
cmake经过多年的发展,已经变得非常复杂。如果光读官网的文档,应该很少有人能读的下去。目前关于cmake的书籍很少,下面这本书是新出的,对cmake的方方面面都做了介绍,非常适合cmake的新人,如果你想深入了解cmake的构建系统,建议阅读本书,github有本书的翻译版本,地址为https://github.com/xiaoweiChen/Modern-CMake-for-Cpp,但是还是建议大家读英文原版。
当掌握了C语言本身后,如果你是从事linux/unix相关领域软件的开发,我建议你一定要读下面的两本书(应该是3本,因为第一本是上下两册),虽然都很厚,但是如果认真读完,融会贯通,收获会非常大。建议先读第一本《Linux/UNIX系统编程手册》,如果有精力可以再精读《UNIX环境高级编程》,两本书可以互补。
本书是介绍linux与unix编程接口的权威著作,主要讲解了高效读写文件,对信号、时钟和定时器的运用,创建进程、执行程序,编写安全的应用程序,运用posix线程技术编写多线程程序,创建和使用共享库,运用管道、消息队列、共享内存和信号量技术来进行进程间通信,以及运用套接字api编写网络应用等内容。 在汇聚大批 linux专有特性(epoll、inotify、/proc)的同时,还特意强化了对unix标准(posix、sus)的论述,彻底达到了“鱼与熊掌,二者得兼”的效果,这也堪称本书的最大亮点。
很多人都知道APUE这本书,在本书第1版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持了前一版风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了多个应用示例,包括如何创建数据库函数库以及如何与网络打印机通信等。
如果是从事网络编程的相关领域,建议先读《TCP/IP详解 卷1:协议》,
本书是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者W.Richard Stevens是大牛,书中对各层协议进行了详解,同时结合tcpdump的抓包结果对协议进行了深入的分析。
本书主要结合TCP/IP协议介绍unix socket 相关api,本书第1、2版由Richard Stevens编写,第3版,由世界著名网络专家Bill Fenner和Andrew M. Rudoff执笔,根据近几年网络技术的发展,对上一版进行全面修订,增添了IPv6的更新过的信息、SCTP协议和密钥管理套接口的内容,删除了X/Open传输接口的内容。
在现在的主流编程语言中,推荐新手学习哪种语言?
在当今快速发展的技术领域,掌握编程语言成为了一项至关重要的技能。各种编程语言以其独特的优势和应用场景,在软件开发的世界中扮演着不同的角色。
编程初学者应该选择什么语言作为入门语言,又该如何深入学习呢?
主流语言
目前较为主流的语言包括:
● Python 在人工智能、机器学习以及网络爬虫开发领域占据重要地位。
● Java 广泛应用于企业级应用、后端服务、分布式系统和微服务开发,以及Android应用开发。
● C 和 C++ 在系统级开发和高性能程序开发中扮演着关键角色。
● C++ 特别适用于游戏服务端的开发。
● Swift/Objective-C 为iOS开发提供了强有力的支持。
● R语言 在统计分析领域有着广泛的应用。
● JavaScript 在前端和后端开发中都发挥着重要作用。
● PHP 是动态网站开发的重要工具。
这些语言虽然各有特点,但它们之间存在很多共通之处,精通一个,其他的学起来就比较快了。比如C是C++的基础,Java和C++在学习曲线上有一定的相似性。
学习路径
如果你对学习什么语言没有想法、无从下手时,可以把以下路径当做一个参考:
● 将Python作为入门语言
Python是一种非常适合初学者的语言,因为它的语法简洁,因此阅读Python代码就像阅读英语一样直观。它可以鼓励你专注于解决问题,而不是纠结于语言的细节,对编程初学者十分友好。
● 接触JavaScript
JavaScript是一种极其有用的语言,学它没有错。
尽管它不像Python那样简单,但它几乎可以在所有平台上运行,包括Mac、Windows、iOS、Android等,甚至在智能手表等新型设备上也有应用。
● JavaScript后,试试Ruby和Ruby on Rails
Ruby和Ruby on Rails也是值得尝试的选项。
Ruby on Rails是一个框架,可以简化Web应用程序的开发、部署和维护过程。
Ruby是一种脚本语言,而Ruby on Rails是一个工具,它通过实时映射技术和元编程技术,减少了开发者编写样板文件代码的工作量,使你可以更专注于系统的逻辑结构。
● 熟悉HTML
HTML虽然不是编程语言,但它对于构建网站是必不可少的。HTML是一种超文本标记语言,它为文字和图片提供了更丰富的描述形式。
新手学习编程,能顺利入门很重要,选择简单易学的编程语言作为切入点,之后再根据各个语言的适用场景和优缺点去深入学习,这是一个思路。
在学习过程中,找到适合自己的方法,让入门变得简单。但最重要的是,持续的努力和坚持是成功的关键。
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。