C语言基础入门:经典强大却有风险,翻译运行步骤全解析

张开发
2026/4/14 20:37:47 15 分钟阅读

分享文章

C语言基础入门:经典强大却有风险,翻译运行步骤全解析
前言编程语言方面常能见到因各自所支持的语言阵营而相互怼的情况实际上那并无必要都仅仅是一种工具罢了。当学会运用多数主流语言之后想必你就不会存有偏见了本质不过都是用于描述计算机的一项任务只是每门语言在设计时所考虑的侧重点有所不同而已。大家最好别在语言层面进行争执不如将时间投入到计算机实现原理以及结构的本质探究上如此更能够明白编程语言每一行描述的内容在计算机中发挥着怎样的作用。本系列将总结现在IT领域主流的那些编程语言的相关知识。关于C语言C语言堪称最为经典的语言众多其他语言的运行环境皆是运用C来进行编写的对于从事写程序工作的人而言又怎能不懂C语言呢一旦提及C首先必定会使人关联到指针当年于大学期间令你感到困惑的指针实则是C语言具备无穷威力的基础所在。C语言或许在更高层面的设计以及编写效率方面存在欠缺之处然而却足够经典并且易于操控底层。指针虽说风险并不小可却极为强大。除此之外ANSI C也增强了C程序在不同操作系统间的迁移性下面列举一些C语言的基础知识。翻译阶段编写好的C程序要先编译成可执行的机器指令才能运行这属于翻译工作翻译主要步骤是编译和链接编译是从源代码到目标代码链接是把各个目标文件链接起来形成一个可执行程序链接器会引入程序用到的所有标准C函数库的函数有时编译过程会把预处理当作一个阶段预处理主要对源文件做些处理像把#define替换成实际值将#include指定的文件内容填充进来。下面是借助gcc去编译且链接的例子经过先后经历编译以及链接之后从而得到可执行程序这两个步骤借助gcc来达成命令是gcc hello.c -o hello最终运行./hello会输出“hello world”。#include int main() { printf(hello world); } 复制代码要是我們編寫了好些個c文件那編譯器就會分別去進行編譯形成多個obj目標文件隨後藉由鏈接器把所有目標文件鏈接在一起從而生成可執行文件。关于扩展名关于windows系统其目标文件扩展名为obj通常链接完成后不会被删除。至于unix - like系统其目标文件扩展名为o一般链接完成后会被删除。在名字层面windows系统的可执行文件扩展名为exe而unix - like系统的可执行文件名能够任意去命名。除此之外有着这样的情况C语言源文件一般后缀为c头文件后缀为h尽管没有强制的规定但大家都会去遵循这个约定。关于编译器在翻译阶段之时是需要把C语言代码转变为可执行程序的而这些相关工作是 C 编译器来达成的C 编译器存在着好多常见的情况是像如下这样。gcc编译例子拿linux系统当中的gcc来说去瞧几个编译方面的例子。要是hello.c的代码是像下面这样的。#include int main() { printf(hello world); } 复制代码此刻在用如下这般表述的 gcc 命令去作编译时我们所采用的方式是直接进行并且是不带任何参数的那种直接于此种状况之下将会生成一个可执行文件这个文件的名字被称作 out.a借助于./a.out 这个操作能够达成输出“hello world”这样的结果。gcc hello.c 复制代码要是增添name.h与name.c、adder.h以及adder.c这两对头文件还有源文件并且把hello.c稍微改动一下三个文件的代码依次如下。//name.h char* get_name(); //name.c char* get_name() { char* name seaboat : ; return name; } 复制代码//adder.h int add(int a, int b); //adder.c int add(int a, int b) { return (a b); } 复制代码//hello.c #include #include #include #includeadder.h #includename.h int main() { char* name get_name(); char* hello hello world; char* output (char*)malloc(strlen(hello) strlen(name)); sprintf(output, %s%s, name, hello); printf(%s\n, output); int a 1; int b 3; printf(a b %d\n, add(a, b)); } 复制代码多个源文件可借由如下这般的命令来开展编译以及链接最终造就出一个名为a.out的可执行文件。当我们凭借./a.out去执行该可执行文件之际它会输出“seaboat : hello world a b 4”。gcc name.c adder.c hello.c 复制代码我们能够通过以下的两个命令针对于name.c以及adder.c这两个文件去编译从而生成目标文件它们分别是adder.o以及name.o。接着再借助下面的第三行命令来编译hello.c源文件在编译完成之后它会自行与name.o以及adder.o这两个目标文件进行连接。gcc -c adder.c gcc -c name.c gcc name.o adder.o hello.c 复制代码另外借助下面的指令可以针对多个源文件开展编译操作进而生成各自所对应的目标文件这表明不会对它们实施链接。gcc -c name.c adder.c hello.c 复制代码如果存在多个目标文件若要对它们进行链接借助下面的命令如此便能够生成那可执行文件。gcc name.o adder.o hello.o 复制代码倘使我们期望针对生成的可执行文件予以命名那么能够借由下面第一行命令达成效果会生成一个名为hello的可执行文件。与之相类似在对多个目标文件进行连接之际指定可执行文件名如同下面第二行命令那般会生成一个名为hello2的可执行文件。gcc name.c adder.c hello.c -o hello gcc name.o adder.o hello.o -o hello2 复制代码关于字符集编写C语言时源代码可以包括如下字符集英语大写小写字母A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 复制代码十进制的阿拉伯数字0 1 2 3 4 5 6 7 8 9 复制代码其它符号! # % () * , . / : ; ? [ ] \ ^ _ { } | ~ 复制代码空白符空格、水平制表符、垂直制表符、换行、换页 复制代码关于注释C语言给出的注释途径有两种一种是以/*起始且以*/终结来去注释多行代码另一种是以//起始来注释单行代码通常来讲对源码里开展注释那就表示编译时会被预处理器清理掉用空格予以替代。/* 第一种注释方式 */ //第二种注释方式 复制代码关于标识符与关键词我们开发人员给变量、函数、类型、结构体、宏等等起的名为标识符C语言要求我们按其规定取名按规定标识符能由英文大小写字母A~Z, a~z、阿拉伯数字0~9以及下划线_组成需注意以下几点固然C语对言来讲还留存着32个特别的关键词我们所进行命名的标识符万万不可跟它们保持一致不然的话便会出现报错的情况。这32个关键词是这样的

更多文章