程序员的C——重学C语言
文章平均质量分 51
C语言是一种非常重要的语言,很多人在读书时潦草的学习了一下C,以后再也不曾碰过,工作几年后,已经掌握了许多经验,回头重学C语言,事半功倍,是程序员夯实基础,快速进阶的必备技能
编程之路从0到1
这个作者很懒,什么都没留下…
展开
-
程序员C语言快速上手——工程篇(十三)
文章目录C语言的编译脚本shell脚本(bat脚本)Makefile 脚本C语言的编译脚本为什么需要编译脚本?当C语言工程很大,源码非常多时,如果还去使用GCC命令编译程序,几乎是不现实的。这时候,可以通过编写shell脚本去执行编译命令,当然这并不是一种好的方式。在Linux上我们可以写shell脚本,在Windows上则可以编写bat脚本假设有以下几个源文件和头文件,需要编译一个mai...原创 2019-10-02 19:33:53 · 3592 阅读 · 0 评论 -
程序员C语言快速上手——工程篇(十二)
文章目录链接与库前言虚拟内存理解链接C程序编译的四个阶段预处理器编译器汇编器链接器小结什么是链接查看符号表*拓展:nm命令查看符号类型静态链接与动态链接函数库静态库打包静态库链接静态库动态库生成与位置无关的目标文件打包动态库链接动态库链接与库前言其实学完C语言的语法后,我们往往会有数不清的疑惑,例如编译器在编译的时候就可以分配内存,那么不同的程序会不会分配到相同的内存地址,计算机如何处理这种...原创 2019-08-08 22:08:10 · 2429 阅读 · 2 评论 -
程序员C语言快速上手——高级篇(十一)
文章目录高级篇数据结构线性表基于数组基于链表栈高级篇数据结构C语言标准库是没有提供数据结构的,但数据结构是编程中的基础设施,其他编程语言通常都是自带各种数据结构。这里我们简单实现一下,将数据结构的基础知识与C语言语法综合练习一下。线性表线性表是最为常用的数据结构之一,其他高级语言也都有提供,也就是Java、Python中的List基于数组基于数组的线性表就是一个动态数组,可以自动...原创 2019-07-28 01:34:50 · 1414 阅读 · 2 评论 -
程序员C语言快速上手——高级篇(十)
文章目录高级篇内存管理内存四区内存分配动态内存管理指针高级二维数组二级指针函数指针void*指针高级篇内存管理C语言程序加载到内存中,通常可人为划分为栈(stack)、堆(heap)、代码段(text)、数据段(data)、bss 段、常量存储区等区域部分,在这个基础上,人们习惯在逻辑上将C语言程序的内存模型归纳为四大区域。请注意,这四大区域只是逻辑上的划分,实际上对于内存而言,它只是一片...原创 2019-07-23 01:39:35 · 7170 阅读 · 15 评论 -
程序员C语言快速上手——高级篇(九)
高级篇结构体背景结构体是一种聚合数据类型,C语言的数组也是一种聚合数据类型,它们显著的区别是,数组是相同数据类型的集合,而结构体可以是不同数据类型的集合。假如要表示一个学生,那么我们可能需要声明多个变量// 姓名char *name;// 年龄int age;// 编号char *number;// 年级char *grade;这在实际操作中非常麻烦,我们需要一种新...原创 2019-07-16 15:53:52 · 983 阅读 · 1 评论 -
程序员C语言快速上手——进阶篇(八)
文章目录进阶篇程序结构与作用域局部变量全局变量static关键字extern关键字模块化开发的补充头文件的嵌套包含头文件的保护欢迎关注我的公众号:编程之路从0到1进阶篇程序结构与作用域过程式、模块化的C语言程序是由多个源文件(.c文件)构成的,在每一个源文件中,都形成一个文件作用域。所谓作用域,实际上就是指有效范围。一旦离开这个源文件的范围,就相当于离开了该源文件的文件作用域。在源文件中定义...原创 2019-07-07 17:00:41 · 979 阅读 · 0 评论 -
程序员C语言快速上手——进阶篇(七)
文章目录进阶语法模块化编程多个源文件使用头文件关于头文件的总结预处理预处理概述文件包含宏定义条件编译预处理的高级使用普通宏带参的宏条件编译其他预处理指令欢迎关注我的公众号:编程之路从0到1进阶语法模块化编程所谓模块化开发,是对源文件的一种组织方式。多个源文件最早的C语言仅仅用来编写小而美的代码,总共不超过100行,随着计算机软件的发展,小程序变成了大型软件工程,整个项目是由多人协同开发完...原创 2019-06-24 01:25:19 · 1853 阅读 · 1 评论 -
程序员C语言快速上手——进阶篇(六)
文章目录进阶语法指针与数组指针的算术运算数组名与指针指针与字符串字符串的进阶指针常量进阶语法指针与数组#include <stdio.h>int main(){ int arr[5]={1,2,3,4,5}; // 依次打印数组每个元素的地址 for (int i = 0; i < 5; i++){ printf("p: %x\n"...原创 2019-06-14 18:42:09 · 1108 阅读 · 4 评论 -
程序员C语言快速上手——基础篇(五)
文章目录基础语法简单函数自定义函数调用函数函数的声明函数的作用域简单函数的小结简单指针什么是指针如何理解内存指针的使用基础语法简单函数C语言中的函数其实是多条指令的组合单元。更通俗的说就是许多语句的组合单元。函数的好处是可以让编程结构化,而不是像早期的程序那样写成一坨。另外函数可以复用代码,这使得程序员可以少写大量的重复代码,还使得大型程序可以模块化,多人同时开发。在国内大量的C语言图书及...原创 2019-06-13 00:39:17 · 1576 阅读 · 1 评论 -
程序员C语言快速上手——基础篇(四)
文章目录基础语法简单数组声明数组初始化数组下标访问计算数组长度数组使用小结字符与字符串简单指针基础语法简单数组把具有相同类型的若干个数据按一定顺序组织起来,这些同类数据元素的集合就称为数组。数组元素可以是基本数据类型,也可以是结构体类型。注意,C语言中的数组与其他编程语言的数组或列表有相似性,但本质上又有不同。声明数组// 声明格式:类型 数组变量名[长度]// 声明数组时需指明元素类...原创 2019-06-08 20:54:52 · 984 阅读 · 0 评论 -
程序员C语言快速上手——基础篇(三)
文章目录小拓展:C语言中int的正确使用姿势语法基础表达式算术运算符关系运算符逻辑运算符赋值运算符运算符优先级分支与循环条件分支循环whilefor控制循环欢迎关注我的公众号:编程之路从0到1小拓展:C语言中int的正确使用姿势上一节已经讲过,由于C语言中,整型的实际长度和范围不固定的问题,会导致C语言存跨平台移植的兼容问题,因此,C99标准中引入了stdint.h头文件,有效的解决了该问题。...原创 2019-06-02 00:25:41 · 1516 阅读 · 0 评论 -
程序员C语言快速上手——基础篇(二)
文章目录GCC 编译命令初探数据类型修饰数值类型基本数据类型的打印获取数据类型的长度变量与常量变量常量欢迎关注我的公众号:编程之路从0到1GCC 编译命令初探编写测试代码 hello.c#include <stdio.h>int main(void){ printf("hello world!\n");}在代码目录下打开cmd命令行或打开VSCode中的命令行,...原创 2019-05-24 23:18:48 · 1385 阅读 · 1 评论 -
程序员C语言快速上手——环境准备篇(一)
前言大多数人在Windows上使用Visual Studio IDE作为C语言学习环境,实际上我认为这是非常错误的做法。每个人都有各自的理由,比如学校是这么教的,要保持和课堂同步,又比如要做毕设等等,还有貌似合理的更高级说法,比如有人喜欢说工具是其次的,只要学好了C语言语法就行,其他任何环境也能快速上手。对不起,如果是针对一门跨平台的高级语言,这个说法成立,但是对于C语言,不成立。使用IDE会最...原创 2019-05-24 18:54:49 · 2934 阅读 · 0 评论