今天开始写下一系列C和C++从入门开始的文章。

简单说几句C和C++的关系。C语言早于C++。

C语言

贝尔实验室的Ken Thompson发明了 UNIX,当时有个B语言的。后来D.M.Ritchie加入到这个项目,主要目的就是改进B语言,于是乎C语言诞生了(K&R)。现在很多计算机底层的东西都是C语言实现的。

C++语言

同样来自贝尔实验室的 Bjarne Stroustrup  发明了C++语言,期初只是在C语言的基础上加了面向对象的东西,后来才加上模板,STL等特性。

值得一提的是,贝尔实验室的最初的 cfront 编译器 (第一款C++编译器),是将C++语言翻译成C语言来实现的。

这些历史,权当做八卦来看就行,对新手学习C和C++,我建议大家先从C语言学起,熟悉指针,内存操作等之后,再学C++,最后再看C++11以后的新特性。

好了,言归正传,学习C语言,首先需要有一个能写程序的工具,需要能够编译,运行的工具。如果想了解细节,还需要工具能够调试。

我们先说一下工具。

编译器: 我主要在 Linux 和 windows 平台做开发,所以会用这两个操作系统做编译环境。

编辑器:很多人推荐vim ,鉴于windows平台用户众多,新手对 vim 操作不太顺畅,所以建议使用VS Code, 一个跨平台的开源编辑器。

先说说 windows 环境,在windows上入门,用visual studio 就行。(Visual Studio C++ 的架构师可是 cfront1.0版本的主力作者李普曼,C++Primer的作者)。qt确实跨平台做的好,UI也比较简单,我还是建议用VS做入门。后边用到UI的时候我们再说QT。

我的windows VM 版本是2012,Visual Studio 的版本是2015. 微软提供简单的安装步骤,直接按照提示安装就行。注意,VS2015在选中安装模块时,C++不在默认范围内,所以需要选中C++模块才行。

安装完之后,打开 VS,选择文件,新建项目,语言选择C++,如果能正常出来下边的窗口,说明C++模块安装正常

我的Linux VM 版本是Red Hat 7.7 版本,gcc 版本是4.8.5. RH 安装gcc 时直接在命令行输入 yum install gcc. 这时候会自动下载安装 gcc。刚刚这个命令只会安装 gcc,不会安装 g++,所以如果在后边我们学习进入C++阶段时,g++是必须的,所以需要把g++ 也安装上,输入yum install gcc-c++ 即可安装g++ 。安装完后,输入 gcc -v 和 g++ -v 能看到安装的版本。如图:

好了,接下来,我们要在这两个平台上实现鼎鼎大名的 Hello World 了。

程序非常简单。

 #include <stdio.h>
int main()
{
printf("Hello World!\n");
}

第一行,引入头文件,该头文件中包含程序需要的库函数的函数声明。

第二行,程序入口,可执行程序的程序入口是 main 函数(可以有参数,因为这里不涉及,所以只定义了main函数)

第四行,程序主体,printf,标准输出,函数声明在 stdio.h 文件中能找到,所以需要在第一行引入头文件。输出末尾是 "\n", 标准换行符,程序语句以 ";"结束。

第三行和第五行,用 {} 将程序封装到一个程序块中(block),C和C++程序的函数都是以 {} 封装。这两行封装了main 函数的主体。

windows环境的Visual Studio集成了编译,运行,调试。切记扩展名会影响编译结果,我们使用扩展名为 .c, 而不是VS默认的.cpp. 这样会以C语言来编译。

Linux 下,需要自己写命令来编译。假设我们的源文件叫 main.c, gcc main.c, 默认输出可执行文件 a.out. 我们可以指定输出文件。 gcc main.c -o main, 输出文件为 main.

当我们运行编译出来的结果时,会在控制台输出 Hello World! 并换行。

好了,第一讲先说这么些,后边会慢慢进阶C和C++。

 

 

C和C++从零开始系列(一)的更多相关文章

  1. Nordic NRF51822 从零开始系列(外部设备片—MPU6050DMP驱动的移植)

    一.硬件准备             (1)开发板和软件参看 Nordic NRF51822 从零开始系列(一)开发环境的搭建             (2)mpu6050模块 二.前置知识     ...

  2. Beaglebone Black从零开始系列教程大汇总!

    谁都有做菜鸟的时候,菜鸟不可怕,怕的是没有人指引前进的方向!本系列文章将逐个阐述BBB各个功能模块的基本使用方法.现在中文的BBB资料太少,它们是本人从全世界互联网的各个角落收集.学习.亲自测试得到的 ...

  3. Nordic NRF51822 从零开始系列(一)开发环境的搭建

    硬件准备     (1)nrf51822 开发板一块(此处使用的是青云系列的,自带jlijnk ob+usb串口芯片)或者使用nrf51822模块+jlink_ob                 ( ...

  4. 从零开始系列-R语言基础学习笔记之二 数据结构(二)

    在上一篇中我们一起学习了R语言的数据结构第一部分:向量.数组和矩阵,这次我们开始学习R语言的数据结构第二部分:数据框.因子和列表. 一.数据框 类似于二维数组,但不同的列可以有不同的数据类型(每一列内 ...

  5. 从零开始系列--R语言基础学习笔记之一 环境搭建

    R是免费开源的软件,具有强大的数据处理和绘图等功能.下面是R开发环境的搭建过程. 一.点击网址 https://www.r-project.org/ ,进入"The R Project fo ...

  6. 从零开始系列之vue全家桶(6)实战前的设计

    搭建好基本框架后我们应该先想一想个人博客应该有哪些功能呢? 为了更好的适应企业的要求,这里我将搭建一个非典型的博客. 在全部采用单页开发的情况下,使用vue-router,路由分别设置home.abo ...

  7. 从零开始系列之vue全家桶(4)带新手小白一起搭建第一个个人网站项目

    未经允许,严禁转载,全文由blackchaos提供. 在安装好了前面大部分需要的插件,我们开始进行第一个个人项目.结合vue+vuex+vue-cli+vue-router+webpack使用. 1. ...

  8. 从零开始系列之vue全家桶(3)安装使用vuex

    什么是vuex? vuex:Vue提供的状态管理工具,用于同一管理我们项目中各种数据的交互和重用,存储我们需要用到数据对象. 即data中属性同时有一个或几个组件同时使用,就是data中共用的属性. ...

  9. 从零开始系列之vue全家桶(1)安装前期准备nodejs+cnpm+webpack+vue-cli+vue-router

    写在前面: 什么是全家桶? 包含了vue-router(http://router.vuejs.org),vuex(http://vuex.vuejs.org), vue-resource(https ...

  10. 从零开始系列之vue全家桶(2)安装调试插件vue Devtools

    小白安装前提是会用git,会从github上找东西. 第一步: 我们可以先从github上找到vue-devtools的项目,下载到本地.下载vue-devtools链接. 克隆方法:git clon ...

随机推荐

  1. ajax传出数组到后台

    var vote = new Array();    $("input[name='option_name']").each(function(i){        if($(th ...

  2. tap事件封装

    <!DOCTYPE html> <html lang="zh"> <head>     <meta charset="UTF-8 ...

  3. [TCP] TCP协议族的学习 and TCP协议

    1.TCP协议族这个大家庭,每个协议在OSI5层模型中所处的位子 其中,网络层里的 ICMP = Internet Control Message Protocol,即因特网控制报文协议, IGMP ...

  4. 获取jar包内部的资源文件

    通常获取一个资源文件很简单,问题是对于jar包内的资源文件,可能会发生意外.假如这里有一个文件操作的类: public class FileLoader { public boolean exists ...

  5. Python 常用模块系列学习(3)--configparser module

    configpaser 模块----用于生成和修改常见配置文档 1. config 对象的创建: import configparser #导入模块 config = configparser.Con ...

  6. W5500

    W5500 芯片是一款韩国全硬件TCP/IP协议栈以太网接口芯片,   最近发现我们国内也有和W5500 芯片一样芯片 介绍给大家 如下图 :

  7. windows下自制动画层引擎 - 放两个demo

    一年前想写一个像cocoa那样,可以方便层动画开发的引擎,写着写着又逆向它的QuartzCore.framework,也就是CoreAnimation的底层,已经大半年没有搞windows这个引擎.大 ...

  8. 将Swagger2文档导出为HTML或markdown等格式离线阅读

    网上有很多<使用swagger2构建API文档>的文章,该文档是一个在线文档,需要使用HTTP访问.但是在我们日常使用swagger接口文档的时候,有的时候需要接口文档离线访问,如将文档导 ...

  9. Hadoop简述

    Haddop是什么? Hadoop是一个由Apache基金会所开发的分布式系统基础架构 主要解决,海量数据的存储和海量数据的分析计算问题. Hadoop三大发行版本 Apache版本最原始(最基础)的 ...

  10. TypeError: Cannot read property '_t' of undefined (VUE + ElementUI + i18n)

    在使用vue的ElementUI库,在多语言时报错: TypeError: Cannot read property '_t' of undefined 错误是在点菜单栏时随机抛出的,F12抓不到,只 ...