C基础入门 - 第一章 - C语言绪言

第1章 C语言绪言

 1.1 C语言概述

  1.1.1 C语言世界 

  1.1.2 C语言学习, 能当饭吃吗 

 1.2 开发环境构建 

  1.2.1 visual studio安装使用 

  1.2.2 visual studio无脑调试 

 1.3 请记住 hello world

  1.3.1 注释详解 

1.3.2 也许这一章是最难的

 1.4 扩展阅读 - visual studio编译流程

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

1.1  C语言概述

  C语言的诞生是现代程序语言革命的起点。今天,C语言依旧在系统编程、嵌入式编程等领域占据着统治地位。

C语言是丹尼斯·里奇[Dennis Ritchie]开发的。因此,他被称为c语言之父、UNIX之父。

和其它大多数语言不同,C语言有一个漫长的进化过程。就说当下开发人员会用到的C的版

本就有C89[1989年C标准组织定义的C标准规范], C99, C11.本书将会采用C11系列语法分析和举例子.

  C语言历经很多年,从一个实用工具进化为一种经过大量实践和测试的语言。第一个C

语言编译器大约出现在1970年。时光荏苒,作为它的根基的Unix系统得到了广泛使用,C

语言也随之茁壮成长。它对直接由硬件支持的底层操作的强调,带来了极高的效率和可移植

性,反过来也帮助了Unix获得了巨大的成功。

下面感受一下出自C语言之父的手稿

In C, the program to print "hello world" is
#include <stdio.h>

main()
{
    printf("hello world\n");
}

感谢有你!

1.1.1 C语言世界

  信息时代已经和C语言世界密不可分. 一直在你我身边. 例如当我们享受快捷的刷脸支

付的时候, 手机使用底层运行环境就是C语言实现的.

在我们登上飞机观看实时直播的视频节目, 提供流传输服务的底层多数仍然是‘C语言‘.

同样我们使用PC操作系统内核清一色也是C写的. 例如中科院和Ubuntu合作的

Ubuntu Kylin操作系统.

通过上面举例, 就是为了说明. C语言是信息社会提供信息服务的基础!

1.1.2 C语言学习, 能当饭吃吗 

  C真的可以当饭吃. 学的越好, 饭吃的越有意思.C语言是冯诺依曼计算机软件软件体系的基石.

只要这个计算机架构没有变化. 那么C永远这个体系中最强结界. C哲学强调的是自由,最小

意外. 程序员需要对自己代码负责.

举例来说, C语言最大优势在于和软件开发底层机制联系的很紧密. 而理解底层的开发

人员, 最大的好处基础扎实在于知其然,知其所以然. 更能融会贯通, 武功突破瓶颈更加容

易. 程序世界, 万般语言皆奥妙, 唯C一剑可破之. 但愿你就是下一个风清扬.

    C 语言怎么学习, 推荐用最笨的方法.

    1. 多看几遍, 不懂那就照着抄3遍

    2. 多做题, 多写代码

    3. 多思考, 多验证代码, 凡事多Google.

    4. 把键盘敲烂, 把好书看遍.

路在脚下, 路在心中, 路在手上. 不懂就多看多敲多琢磨.

1.2 开发环境构建

  C的开发环境有很多, 这里介绍一种Microsoft公司提供一种开发环境. 适用

Window上使用. 传说中的宇宙第一IDE.

这里需要自己完成这几个步骤

   1. 网上找最新的Visual Studio 最新的企业版[目前VS 2015] iso镜像下载

  2. 顺带找一个激活码

  3. 注册 Microsoft Outlook 邮箱账号

  4. 将上面下载vs 镜像解压到目录下. 删除iso.

得到上面结构. [操作系统推荐用Window 最新版]

1.2.1visual studio安装使用

点击iso解压包中

得到下面运行界面.

选择自定义.

只选择C++, 后面直接下一步, 直到安装.预计安装过程中推荐保持联网状态.

等待30min-2h, 会提示安装成功. 此刻按下Win键之后搜VS

把这个图标快捷方式发送到桌面上. 直接双击进去这时候需要做

  1) 登录使用申请的 Mircrosoft Outlook 邮箱账号

  2) 输入网上的找到 Visual Studio Key

这里基本开发环境搭建完毕, 我们实际搭建一个项目让程序跑起来. 按照下面操作

[文件] -> [新建] -> [项目]

看见下面界面

选择Visual Studio解决方案. 填好解决方案名称.找到对映位置. 这里为了写书方便. 一定要

用英文目录, 不会那就用 abcd 拼音搞!!!

再在当前解决方案下面添加一个项目 [解决方案右击] -> [添加] -> [新建项目]

后面添加具体项目. 选择Visual C++ 空项目. 填好名称点击确定.

后面 [在Heoo项目右击] -> [添加] -> [文件]

后面选择 C++ 文件, 名称填写 main.c 后面确定.

后面在main.c 文件中输入如下内容 .

#include <stdio.h>

/*
 * 主函数, 用C写首诗
 */
int main(void) {

    fprintf(stderr, "I am here!\n");

    // 得到玩家输入回车字符才结束
    getchar();
    return 0;
}

点击 三角形那个 运行按钮跑起来.

上面就是我们程序运行的最终结果. 对于上面结果代码, 不懂没关系. 先熟悉开发流程, 代码后面

会逐渐明白起来的. 加油(^ω^).

1.2.2 visual studio无脑调试

在说之前, 先对1.2.1 Visual Studio 解决方案简单讲解一些. Visual Studio 体系结构是

一个解决方案中包含多个项目.一个项目也可以理解成一个工程.自成一体的功能模块. 而每

个工程之间基本独立运行.每个工程中又可以包含许多源文件(可以理解为*.c文件).

而我们目前只讲解一个工程只有一个main.c头文件情况. 对于1.2.1 中 main.c 解释

如下. 简单看看混个脸熟.

这里说一下 , 回车 就是键盘中 Enter 键, 在 C 中用转义字符 ‘\n’ 表示.因为字符

分为可见字符例如’a’, ‘A’ 也有不可见字符. 在C中通用转义字符表示. 后面会讲到

转义字符表. 再深入了解.

本小节主要讲解VS的调试. 先看下面需求.

请求出1+2+....+100 = ? 的和

先看着别人做, 软件开发是技术活,不是脑力活, 所以多看看就懂了. 同样构建

[one_project] [ getsum ] [main.c] 

注以后统一采用:[解决方案名称] [项目名称] [文件名] 默认规则表述.

这里需要注意的一下,需要设置启动项目

#include <stdio.h>

// 配置要加数目 用 _INT_CUT 代表 100
#define _INT_CUT (100)

/*
 * 处理1+2+...+100 = ? 的和
 */
int main(int argc, char * argv[]) {

    int sum = 0;
    int i = 1;

    // 开始累加
    while (i < _INT_CUT) {
        sum = sum + i;
        i = i + 1;
    }

    // 打印数据
    printf("sum = %d\n", sum);

    // 等待用户输入
    getchar();

    return 0;
}

运行结果是:

那我们开始打断点, 用鼠标在最左边点击.

按下F5

鼠标滑到断点处, 会看见这个值. 这就是断点的意义. F10, F11都是下一步.让端点跳到下一步.

具体的区别, 自己尝试用用, 感受一下. 你会发现别有洞天.通过鼠标滑到这个值得位置, 久可以

看见这样能够实时看程序运行是否符合预期.

这就是VS调试的核心. 还有一种通过 printf. 打印出值检查一下. 上面一句话

// 打印数据

printf("sum = %d\n", sum);

第一个是要输出的字符串 其中 %d是一个替换变量的占位符, 用sum的值进行替换.还是那就话

多写不明白没关系,会懂得.

1.3 请记住 hello world

下面是个标准的hello world 程序代码.

#include <stdio.h>

/*
 * 标准函数通用写法
 */
int main(void) {

    printf("hello world\n");

    return 0;
}

另一种标准写法

#include <stdio.h>

/*
 * 标准函数通用写法
 */
int main(int argc, char * argv[]) {

    printf("hello world\n");

    return 0;
}

上面是C11标准规定两种main函数写法. 一定强记, 其它都可以认为很low. 除了C语言之父那个

年代的代码. 遵循标准是成长的基石.

1.3.1 注释详解 

注释的本意用好理解的语言是解释一些特定代码.在上一辈代码大师理念中,信仰"

代码就是注释". 这也是很‘‘对‘‘的. 这是建立在无穷的自信和装逼的基础上的. 做为一个

21世纪开始撸代码, 一定记住, 代码可以没有, 注释必须要有!!!  注释就是当时最核心的

思路.

在C中又两种注释一种是多行注释如下:

/*
 * 在当前线程池中添加待处理的线程对象.
 * pool        : 线程池对象, sp_new 创建的那个
 * run        : 运行的函数体, 返回值void, 参数void*
 * arg        : 传入运行的参数
 *            : 没有返回值
 */
extern void sp_add(threadpool_t pool, vdel_f run, void * arg);

/* */ 包裹的部分就是多行注释.只需要知道这东西可以注释多行文本. 一定要用半角字符. 对于C

程序符号都是用英文字符. 推荐用搜狗输入法进行下面设置.

中文使用英文标点, 这样写代码的时候不需要中英文来回切.

还有一种单行注释 // , 主要看下面示例.

//文本字符串创建的度量值
#define _INT_TSTRING (32)

// 后面就是单行注释的内容, 程序编译的时候会忽略. 上面一句话 定义 _INT_TSTRING 这东西

是32, 预编译的时候会全部替换为32.

Please be sure to remember, 没有注释就充满了杀戮. 这个世界需要英雄来注释!

1.3.2 也许这一章是最难的

真的这章是最难的. 软件开发一共就三部曲. a|hello world 跑起来 -> b|所需语法了解

起来 -> c|项目开始堆起来. 而这一章就是 最重要的开始 hello world 跑起来! 完成了这些

那么C语言学习已经完成1/3.对于hello world 需要做的事是, 搜集各种相关资料,搭建开发

环境, 熟悉调试环境. 让官方demo跑起来, 解决遇到的所有奇葩问题.

踏入编程门槛最好的三中先天环境. 1. 遇到早, 下手狠 ,  2. 就是喜欢,  3. 单身, 穷,

喜欢lol . 这些哪怕只有一条符合, 都不要辜负上天给我们的先天财富! 当你走上hello world

路上时候, 也是在为要寻一颗明星.

为要寻一颗明星

1924年12月1日 徐志摩

我骑著一匹拐腿的瞎马,

向著黑夜里加鞭;

向著黑夜里加鞭,

我跨著一匹拐腿的瞎马。

我冲入这黑绵绵的昏夜,

为要寻一颗明星;

为要寻一颗明星,

我冲入这黑茫茫的荒野。

累坏了,累坏了我胯下的牲口,

那明星还不出现;

那明星还不出现,

累坏了,累坏了马鞍上的身手。

这回天上透出了水晶似的光明,

荒野里倒著一只牲口,

黑夜里躺著一具尸首。

这回天上透出了水晶似的光明!

1.4 扩展阅读 - visual studio编译流程

  也许是‘‘杂耍‘‘吧, 看看也好. 这是别人的思路, 请经量忍住, 看完之后再骂傻逼.

打开 VS 提供命令行. 并且跳转到指定我们建的项目下. 如下图.

通过这个图线索, 弄出这个环境. 这里只使用main.c 文件内容, 并且跳转到这个目录下.

代码是用的是 getsum project 中的代码.目前C的代码到可运行一般都需要经历下面几步.

预编译

处理代码文件中宏替换, 文件内容导入, 注释的消除(可以通过命令不去掉消除) 通用

说法是将本文件中需要用的都弄过来. 不检查语法错误.

命令:

cl  /P  main.c

将main.c 生成 main.i 预编译文件.

编译

将预编译的文件转成汇编代码, 这个阶段会检查语法错误.

命令:

 cl  /Fa  /Tc  main.i

del main.obj main.exe

这个命令会做很多事, 目前只考虑编译生成汇编文件 main.asm.

汇编

这个过程是将编译得到的汇编代码, 编程机器平台的机器码 , 二进制文件.

命令:

ml  /c  main.asm

执行命令之后会得到 main.obj 机器码文件.

链接

这个过程将需要的功能机器码文件联合起来生成一个可在当前平台的跑的程序. 对于链接

还有很多类型的链接, 以后遇到自会明白!

命令:

cl  /Fa  /Tc  main.i

cl  main.obj

命令执行之后就得到了main.exe

课外阅读结束, 可以的话可以尝试通过网络完成这些问题.

  1) 设置VS 所有文件都左边都显示行号, 设置字体为Lucida Console

  2) 倒着看一遍, 将本文中标准的那两个主函数, 写在纸上, 再电脑上再写一遍,跑起来.

时间: 2024-11-04 09:40:57

C基础入门 - 第一章 - C语言绪言的相关文章

jquery基础教程 - 第一章 JQUERY入门

Jquery基础教程 - 第一章 JQUERY入门 内容提要 1.jquery能做什么 2.jquery为什么如此出色 3.第一个jquery驱动的页面 4.纯javascript与jquery 5.开发工具 6.小结 1.jquery能做什么 取得文档中的元素 -- jQuery为准确的获得需要检查或操纵的文档元素,提供了可靠而富有效率的选择符机制. 找到所有应用了.content class样式的div中所有的P标签             $('div.content').find('p'

第一章. ActionScript 语言基础

第一章. ActionScript 语言基础 1.0. ActionScript 3.0 Cookbook 概述 1.1. 新建一个 ActionScript project 1.2. 自己定义应用程序属性 1.3. 在哪里写ActionScript 代码呢 1.4. 怎样跟踪信息 1.5. 处理事件 1.6. 响应鼠标和键盘事件 1.7. 算术运算 1.8. 逻辑运算 1.9. 运行条件语句 1.10. 运行复杂的条件语句 1.11. 某段时间反复运行一种操作 1.12. 长时间运行一个任务

《DirectX 9.0 3D游戏开发编程基础》 第一章 初始化Direct3D 读书笔记

REF设备 参考光栅设备,他能以软件计算方式完全支持Direct3D Api.借助Ref设备,可以在代码中使用那些不为当前硬件所支持的特性,并对这此特性进行测试. D3DDEVTYPE 在程序代码中,HAL设备用值D3DDEVTYPE_HAL来表示.该值是一个枚举变量.REF设备用D3DDEVTYPE_REF来表示.这种类型非常重要,你需要铭记,因为在创建设备的时候,我们必须指定使用哪种设备类型. COM(组件对象模型) 创建COM接口时不可以使用c++关键字new.此外使用完接口,应调用Rel

《ECMAScript 6 入门- 第一章 lef和const命令》 —— 摘抄

1 . lef命令 ES6新增了let命令,用来声明变量.它的用法类似于var,let声明的变量,只在let命令所在的代码块内有效. { let a = 10; var b = 1; } a // ReferenceError: a is not defined. b //1 2.const命令 const也用来声明变量,但是声明的是常量.一旦声明,常量的值就不能改变. const PI = 3.1415; PI // 3.1415 PI = 3; PI // 3.1415 const PI =

村田噪声抑制基础教程-第一章 需要EMI静噪滤波器的原因

1-1. 简介 EMI静噪滤波器 (EMIFIL®) 是为电子设备提供电磁噪声抑制的电子元件,配合屏蔽罩和其他保护装置一起使用.这种滤波器仅从通过连线传导的电流中提取并移除引起电磁噪声的元件.第1章说明了电子设备中使用EMI静噪滤波器(EMIFIL®)的原因,还概述了通常电磁噪声抑制所用的典型屏蔽和滤波器的操作. 图1-1 EMI静噪滤波器 (EMIFIL®) 1-2. 什么是电磁噪声干扰? 电子设备收到强电磁波时,电路中会感应到不想要的电流,这会产生非预想的操作或对预想的操作形成干扰.如果外部

Java语言程序设计(基础篇)第一章

第一章 计算机.程序和Java概述 1.1引言 什么是程序设计呢? 程序设计就是创建(或者开发)软件,软件也称为程序. 1.2什么是计算机 计算机是存储和处理数据的电子设备,计算机包括硬件(hardware)和软件(software)两部分.

第一部分 基础篇 第一章 走进MongoDB

声明:该文章主要来自<MongoDB实战>一书内容,主要想通过该书学习MongoDB的相应知识,加深理解,故写在自己的博文当中,作为记录在最后的章节中,会有一个自己集合MongoDB数据库应用的JavaEE的web应用. 第一章 走进MongoDB MongoDB是一个高性能.开源.无模式的文档型数据库,是当前NoSQL数据库产品中最热门的一种,它在许多场景下可用于替代关系型数据库或者键/值存储方式,MongoDB使用C++开发,MongoDB的官网是地址是:http://www.mongod

花无涯带你走进黑客之 小白入门 第一章

最近开始有一个想法, 想谈谈小白如何慢慢学习网络安全相关知识, 有正确得价值观,做正确的事情. 初心也是为了帮助更多人学习到黑客攻防,学会保护自己和身边的人. 写一些自己的分享和经验,每一期可能都有时间就进行更新,感谢大家的支持! 相信每一个对计算机感兴趣的童鞋都有着一颗黑客的心, 我也不例外, 我希望通过一系列的文章让大家了解黑客和网络安全. 不是很会写一些感人故事心得, 更想是通过自己得分享也顺便提升自己 -.- 不是很喜欢在文章里头加特别花哨 过多的图片,也不会怎么配图... 可能阅读起来

《大道至简》第一章JAVA语言伪代码

第一章写了编程的精义详细写出了编程是简单的.举愚公移山的例子,既写出了我们中华文化源远流长,博大精深,千百年前就有了编程的思想,也引出了结构概念,虽我之死,有 存焉",这里描述了可能存在的分支结构,即"IF"条件判断,以及子子孙孙无穷匮也等循环结构,等编程思想.关于我会不会写程序的问题书里面也做了详细介绍!除了先天智障或后天懒惰者,都是可以学会写程序的,也许会给学编程的学生增加了很大的信心. 下面是源代码................... import.java.大道至简