C语言学习01.C语言入门

C语言只是一门语言,和中文英文等语言是一样的,只是换了一种表达方式,其目的在于用我们理解的语言写下我们的想法,然后由编译器翻译成机器可以读懂的语言,然后机器运行得到我们想要结果。所以使用什么编辑器、编译器都不重要,重要的是理解人脑思考方式和机器思考方式的区别。但是这并不简单,需要通过日积月累的编程去体会。

每种语言都有着自己的语法,C语言也一样,大家需要遵循一个规则。

C,一个小巧而简洁的语言,不用学习很多,仿佛练剑,只用随身带一把剑,便可仗剑走天涯。但是你也只有一把剑,不管遇到什么对手,都只能交给手中的剑。而像java,走的时候拖家带口,打架的时候就飞机大炮随便用了。这个要看每个人的信仰了,如果就喜欢简约轻松的,C无疑是最好的选择。

C语言起源:
1972年,贝尔实验室,丹尼斯·里奇(Dennis Ritch)和肯·汤普逊(Ken Thompson)发明了C语言用于Unix系统。
前身是B语言,汤普逊开发。

C语言4大特点:

语言特点:高效性,可移植性,灵活和强大。
编码特点:面向过程,函数调用,内存调用,结构化设计(可分割)
需要管理指针,内存分配,内存回收,要明白如何处理串,还有动态数据。
因为允许直接访问物理地址,所以风险也同时存在。(成也指针,败也指针)“想要拥有自由就必须时刻保持警惕”。

基本组成(句-段-篇)

30 * 3;     //语句,需要用分号识别,像英文单词用空格隔开一样。
{30 * 3;}   //段落(大括号),里面的词必须用分号隔开。
            //具有隔断性,就是里层括号可以隔开外层括号;
            //具有单向透视性,就像车上的黑膜,里层可以看到外层的东西,反之不可以。
f(x) = 3*x + 3  //数学函数,输入一个数进行处理后得到一个结果。
//计算机函数:
int main()
{
    30 * 3;
    return 0;
}
//文章 (函数):不一定要给数,也不一定有结果。函数就是对某一些数据进行处理的过程。

使用C语言的7个步骤:

1. 定义程序目标,用概念来分析问题,而不是用计算机语言。
2. 设计程序,界面、组织、目标、工期。
3. 编写代码
4. 编译,编译器也是一个程序,工作是将源代码转换为可执行代码。
5. 运行程序
6. 测试和调试程序,bug。
7. 维护和修改程序

先了解下计算机

计算机可以执行的是指令,CPU从内存取一条指令,执行一条。所以我们编写的C语言代码需要转换为指令给计算机执行,也就是二进制文件。十进制就是逢10进1,二进制就是逢2进1,计算机里面只有开和关两个状态,所以是二进制。所以计算机眼里一切都是数字。而这么多操作怎么定义,加减乘除存取等等,由CPU的寄存器定义,某一位开,表示一个操作,两位一个开一个关,又是一个操作。简而言之,计算机只认识二进制文件

计算机可以干什么:

组成:中央处理器,随机存取内存,永久存储设备,外围设备。
CPU从内存中获取并执行下一条指令,CPU的工作区:寄存器,只能存储一个数字。
CPU能理解的指令有限,称为指令集。
计算机存储的都是数字,所有的计算机程序都必须以数字指令码来表示。
而写这些指令很复杂,而用C语言写好了再翻译成指令就方便多了。而这个翻译的过程就是编译。

C和C++都是编译型语言

编辑源程序—编译—与函数库连接—运行(编译型语言)
.c---------.obj----------.exe
解释型:shell,php,asp,jsp,javascript,python,perl,lua等
混合型:java,C#等
编辑器 + 编译器(Compiler) + 调试器(debugger) = IDE(集成开发环境(Integrated Development Environment))
编译,也就是变成二进制文件的过程。
即:输入源代码---编译器---可执行代码(二进制文件)

编译器

GUN Compiler Collection(GCC)和MinGW(Windows系统下的gcc工具)两大编译器
gcc的处理过程:
1、预处理 这个阶段用来处理所有的预处理指令。
2、编译 对预处理后的代码进行翻译工作,等到计算机所认识的格式。生成目标文件。像网站,超链接,代码之间也有链接。此时的目标文件就是没有链接的一个个网页。
3、链接 把所有的目标文间和其他必要的文件合并在一起得到最终的可执行文件。
gcc常用参数:
gcc -o 用于指定最终生成的可执行文件的名字
gcc -E 只对源文件进行预处理
gcc -c 只编译不链接
-std=c89/c99 用来指定编译所遵循的C语言标准

Linux下C语言程序的开发步骤

1、使用vi编写C语言源程序,编写完成后保存退出。
2、使用gcc<源程序文件名>对源程序进行处理得到计算机认识的可执行文件。
3、使用命令./a.out执行得到的文件。

Windows下开发步骤:

使用cl 文件名.c
然后文件名.exe直接执行

C语言结构:

/*
C语言结构:
#include                    //预编译器指令
int main(void)              //main()总是第一个被调用的函数
    statements              //函数由语句组成
function a()
    statements
function b()
    statements
*/

C程序的结构特点

  • C程序
    • 源程序
      • 预处理命令+全局变量声明+函数
        • 函数(函数首部+函数体)
          • 函数体(局部变量声明+执行语句)
          • 语句分为:标号语句,复合语句,表达式语句,选择语句,迭代语句,跳转语句。

函数(function)组成

  1. 函数名(function name):不能一样,区分大小写。从main开始执行,所以必须有一个main主函数,不然系统不知道从哪里开始。
  2. 形参列表(parameter list):需要处理的数据,允许为空。
  3. 返回类型(return type):处理完的结果。只能有一个。(人和人不一样,数和数也不一样,数据类型。类型不仅定义了数据的内容,还定义了这类数据可以进行的运算。)
  • 用return确定返回值,关键字(C语言中具有特殊意义的单词,全部小写)。return后面的语句不执行了。
    • 大多数系统中,main的返回值用来指示状态,0表示成功,非0通常用来指出错误类型。
  1. 函数体(function body):用花括号括起来的语句块。

函数简介:

  1. 函数总共出现了三次:声明原型,定义,调用。
  2. 何时调用butler取决于它在主函数的位置,而不是定义的位置。
  3. 如果定义在调用的前面,可以省略声明。但是建议使用上文的顺序,因为方便查询和使用。
  4. 无论main放在哪里,都是从main开始执行。

预处理指令

以#开头的语句。表示从其他文件中读取内容替换掉这一行。
<>表示文件应该从系统中规定好的位置寻找。
""表示文件应该从当前源文件所在目录开始找起。
.h文件代表头文件。
标准库(standard library),系统为你准备好的工具,可以直接拿来用。

注释

为了方便自己和他人,一定注意多写注释,方便理清逻辑和了解命名的意思。

/*这个叫段注释,也叫块注释 */  
//这个叫行注释

段注释不能嵌套
行注释可以屏蔽掉段注释。
注意行注释和换行符一起的情况。

C语言语句组成:

数据 + 运算符 + 标识符 + 关键字 = 语句
语句分为:标号语句,复合语句,表达式语句,选择语句,迭代语句,跳转语句。

C语言的书写规范

  1. 一行内尽量放置一条语句,超长的语句可以放在多行内。
  2. 在合适的地方使用空格提高可读性。
  3. 被同一个大括号包含的语句要左对齐,被不同大括号包含的语句要用缩进区分开。
  4. 联系不紧密的语句之间可以使用空格隔开。
  5. 标识符:
    小驼峰,XiAn,windows平台
    下划线,xi_an,Linux平台

错误类型:

语法错误,语义错误。

调试方法:

1.自己模拟计算机运行。
2.打印调试。
3.断点调试。
//总结:
//#include <Windows.h>

#include <stdio.h>
//以#号开头的称为预处理命令(preprocessor directive),作用是包含stdio.h这个头文件
//<>表示从系统位置开始找,""从当前源文件所在的目录找。
//标准库(standard library)

int main()//主函数,开始和结束的地方
{
    int num;
    //int表示类型,是关键字(Keyword);num是变量名,是标识符(identifier)的一种。
    //这句表示声明一个叫num的变量。所有变量都要先声明再使用。
    //C99和C11和C++一样,声明只要在使用前就行了。以前的C标准是必须把所有变量都定义在最开始的地方。
    //标识符由数字、字母(大小写)、下划线组成,数字不能开头。

    num = 1;//赋值。
    //声明为变量创建和标记存储空间,未初始化则里面的值是随机的。

    int num2 = 2; //声明时赋值,叫初始化(initialize)。

    printf("Hello World世界!num:%d\n",num);
    //系统函数,格式化输出
    //括号里的是实际参数(actual argument),声明该函数的地方用的参数叫形式参数。
    //函数执行后,控制权给主调函数,也就是这个main函数。
    //\n表示换行符(newline character),是一种转义序列(escape sequence)。
    //%d表示占位符,用于指出输出num的位置。

    //system("pause");
    return 0;//返回值,一般正常返回0。返回给谁?主函数的返回值给操作系统。
}

//函数体用{}括起来,每条语句;结束

/********注释*********
*这个叫段注释,也叫块注释
// 这个叫行注释
*
*段注释不能嵌套
*行注释可以屏蔽掉段注释
*注意行注释和换行符一起的情况
*****************/

//为何不内置输入输出:因为不是所有程序都需要输出。

/*****************
*先声明变量再使用的理由:
*把变量都定义在一个地方,方便读者查找和理解程序的用途。
*声明变量会促使你在编写程序之前做一些计划。
*有助于发现程序中的小错误,比如变量名拼写错误。
*****************/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容