C语言/C++编程学习:一个简单的实例

让我们来看一个简单的C语言程序。从下面的程序可以看出编写C语言程序的一些基本特征。

 

如果你能知道该程序将会在显示器上显示一些内容,那说明你还是知道一些的!

确实如此,但所要显示的确切内容不是显而易见的,所以请运行程序来观看结果。

首先,用你熟悉的编辑器建立一个上面这个样的程序,然后给这个程序取一个名字,并以 .c 作为结尾以满足所在系统对文件名格式的要求。

例如,你可以把它命名为 helloworld.c。 现在编译并运行该程序 。

如果一切运行正常,其显示结果为:

 

实例简单说明

我们来将程序的源代码分析一下:

◆  #include ←包含另一个文件

这是程序的第一行。它的作用相当于你在文件中的这行所在的位置键入了文件 stdio.h 的完整内容。实际上,它是一种剪切和粘贴操作,这样可以方便地在多个程序间共享公用的信息。

#include 语句是 C预处理指令 的一个例子。通常,C 编译器在编译前要对源代码做一些准备工作;这称为预处理。

stdio.h 文件作为所有 C编译包的一部分提供,它包含了有关输出输入函数的信息以供编译器使用。这个名字代表标准输入输出头文件。我们称之为头文件,C语言中通常都带有许多头文件。

◆  int main () ← 函数名

接下来的这行代码声明了一个 main函数。一个 C语言程序总是从称为 main()的函数开始执行的。

你可以对你所用的其他函数任意命名,但是 main()必须是开始的函数,所以说,main()函数在程序中是唯一的。

那么圆括号的功能呢?它们表明 main()是一个函数。以后你将了解到更多的函数。但现在,请你记住这个函数是 C程序的基本模块。

int 指明了 main()函数的返回类型。这意味着 main()函数返回值的类型是整数。返回到哪里呢?返回给操作系统。

如果浏览老版本的 C代码,你将发现程序常常以:

main()

这种形式开始。C90标准勉强允许这种形式,但是 C99标准不允许。因此即使你当前的编译器允许,也不要这么做,请注意规范。

◆  /* 一个简单的 C程序 */ ←注释

包含在 /* */ 之间的部分是程序注释。使用注释的目的是使自己和他人更容易理解你的程序。

C语言的注释的一个好处就是可以被放在任意的地方,甚至是和它要解释的语句在同一行。

一个较长的注释可以单放一行,或者是多行。在/* 和 */之间的所有内容都会被编译器忽略掉。下面是一些正确和不正确的注释形式:

 

也可以这样写:

 

 

C99 增加了另一种风格的注释,它被普遍用在 C++ 和 Java里。这种新形式使用 // 符号,但这种注释被限制在一行里:

 

 

因为一行的结尾就标志着注释的结束,所以这种形式只在注释的开始处需要标志符号。

{ ← 函数体的开始 } ← 函数体的结束

{

...

}

在前面的程序中,花括号划定了 main函数的界线。通常,所有的 C语言函数都使用花括号来表示函数体的开始与结束。它们的存在是必不可少的,因此不能丢掉它们。仅有花括号 { } 能起到这种作用,小括号()和中括号 [ ] 都是不可以的。

花括号还可以用来把函数中的语句聚集到一个单元或代码块中。

◆  int num; ---声明语句

这个语句表明你将使用 num 这个变量,并且它是 int(整数)类型的。

程序中的这一行叫做声明语句 。该声明语句是 C语言中最重要的功能之一。在 C语言中,所有变量都必须在使用之前定义。

这句声明表达了两个意思:

第一,在函数中你有一个名为 num 的变量。

第二,int说明 num 是一个整数,也就是说这个数没有小数点或者小数部分。编译器使用这个信息为变量 num在内存中分配一个合适的存储空间。句末的;指明了这一行是 C语言的一个语句或指令。每条语句后面都需要写上;。

单词 int 是 C语言的一个关键字,它代表 C中最基本的一个数据类型。关键字是用来表达语言的单词,你不能将它们用于其他目的。例如,不能把 int 用作一个函数或者是变量的名字。

◆  num = 1; ←赋值语句

这行程序是一个赋值语句。赋值语句是 C语言的基本操作之一。这个特殊的例子的意思是“把数值1赋给变量 num”。可以简单理解为把1给了num,那么num就是1了。注意赋值语句赋值的顺序是从右到左。同样,该语句也用;结束语句。

◆  printf ("hello world!"); ←一个函数调用语句

printf ("hello world! ");

printf ("这是我学习C语言的第%d天! ",num);

上面两句话都使用了 C语言的一个标准函数:printf();。圆括号表明 printf 是一个函数名,程序将识别 “ ” 之间的内容并把它们显示在屏幕上。

结果显示的结果应该为:

 

那么引号中有字符 ,但并没有输出它们!发生了什么事情呢? 字符代表一个称为换行符的字符,它意味着“在下一行的最左边开始新的一行”。

换行符是转义字符的一个例子。转义字符通常用于代表难于表达的或是无法键入的字符。其他的例子比如 代表 Tab键, 代表退格键盘。每个转义字符都用斜线字符()开始。

另外,输出最后一行时 %d 起什么作用?回忆一下,这一行的输出结果是:

这是我学习C语言的第1天!

当这一行输出时,数字1被符号组合%d代替了,而1是变量 num的值。%d是一个占位符,其作用是指出输出 num 值的位置。简单来说 就是把%d用这行语句后面的num替换。

◆  return 0; --- 返回语句

return 语句也叫返回语句,它是程序的最后一个语句。在 int main()中 int 表示 main()函数的返回值应该是一个整数。

C标准要求 main()这样做。带有返回值的 C语言函数要使用一个 return 语句,该语句包括关键字 return,后面紧跟着要返回的值,然后是一个分号。

对于 main()函数来说,如果你漏掉了 return语句,则大多数编译器将对你的疏忽提出警告,但仍将编译该程序。此时,你可以暂时把 main()中的 return语句看作是保持逻辑连贯性所需的内容。

今天的学习就到此为止,希望你能有所收获!

学C/C++不易,此路应携手前行。

欢迎关注我的编程公众號【草莓味狸猫】!

 

如果你想跟着小编一起学编程的话!

可以来我的C语言C++编程学习基地【搜索进入】

↓☆↓

 

还有(源码,零基础教程,项目实战教学视频)!

 

【C语言C++编程学习笔记】基础语法,第一个简单的实例编程入门教程!的更多相关文章

  1. JavaScript学习笔记-基础语法、类型、变量

    基础语法.类型.变量   非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或 ...

  2. Shell高级编程学习笔记(基础篇)

    目录 1.shell脚本的执行方法  2.shell的变量类型  3.shell特殊变量 4.变量子串的常用操作  5.批量修改文件名实践   6.变量替换 7.在shell中计算字符串长度的方法  ...

  3. Java学习笔记-基础语法

    Java基础包含关键字,标识符,注释,常量和变量,运算符 关键字 关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词 特点:关键字中所有字母都为小写 Java的关键字 用于定义数据类型的关键 ...

  4. Python学习笔记——基础语法篇

    一.Python初识(IDE环境及基本语法,Spyder快捷方式) Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,没有编译过程,可移植,可嵌入,可扩展. IDE 1.检查Pyth ...

  5. Arduino—学习笔记—基础语法

    图解 函数具体讲解 pinMode(工作接脚,模式) 工作接脚 工作接脚编号(0--13与A0--A5) 模式 工作模式:INPUT或OUTPUT 例子 将8接口设置为输出模式 pinMode(8,O ...

  6. Java学习笔记-基础语法Ⅴ

    学习一些Java常用的API Math:包含执行基本数字运算的方法 如果没有构造方法,一般类的成员都是静态的,通过类名可以直接调用 Java中有两种random函数,Math.Random()函数能够 ...

  7. Java学习笔记-基础语法Ⅳ

    多态:同一个对象,在不同时刻表现出来的不同形态 例如: 猫 cat = new 猫(); 动物 animal = new 猫(); 这里的猫在不同时刻表现出来不同的形态,这就是多态 多态的前提和体现: ...

  8. Java学习笔记-基础语法ⅩⅠ-UDP、TCP

    网络编程 三要素:IP地址.端口.协议 IP地址:使用ipconfig查看,如果装了VM的话,会有VMnet1.VMnet8和WLAN,net1不能从虚拟机到主机,net8不能从主机到虚拟机,net0 ...

  9. Java学习笔记-基础语法Ⅹ-进程线程

    学习快一个月了,现在学到了黑马Java教程的300集 打印流的特点: 只负责输出数据,不负责读取数据 有自己的特有方法 字节打印流:PrintStream,使用指定的文件名创建新的打印流 import ...

随机推荐

  1. .NET Core加解密实战系列之——对称加密算法

    简介 加解密现状,编写此系列文章的背景: 需要考虑系统环境兼容性问题(Linux.Windows) 语言互通问题(如C#.Java等)(加解密本质上没有语言之分,所以原则上不存在互通性问题) 网上资料 ...

  2. 调整JavaScript抽象的迭代方案

    原文链接:Adapting JavaScript Abstractions Over Time 译者:小溪里 校对者:郭华翔.苗冬青 即使还没有读过我的文章<在处理网络数据的 JavaScrip ...

  3. loadrunner跑场景时报错Full MDB file. New error messages will be ignored

    这个原因是在controller跑场景时,controller的日志文件占用内存太大 解决办法:先找到controller的日志文件Results——Results Setting——找到日志的路径, ...

  4. 工具类-Fastjson入门使用

    简介 什么是Fastjson? fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到Java ...

  5. [LeetCode]494. 目标和、416. 分割等和子集(0-1背包,DP)

    题目一 494. 目标和 给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S.现在你有两个符号 + 和 -.对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前 ...

  6. HarmonyOS面向128KB-128MB内存终端开源

    2020年9月10日,以HDC Together为主题的2020年度华为开发者大会在东莞·松山湖举办,华为带来了HarmonyOS 2.0.EMUI 11.HMS.HUAWEI HiLink.HUAW ...

  7. JVM运行时数据区划分

    Java内存空间 内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行.JVM内存布局规定了JAVA在运行过程中内存申请.分配.管理的策略,保证了JVM的高效稳 ...

  8. Vue Render自定义tabled单元格内容

    解决问题 只举一个例子(我正好需要用到的) 在写中后台时, 如果对 表格组件 再度封装了, 比如这样的 以element-ui 为例: <template> <el-table :d ...

  9. 微信小程序入门到精通[更新版]

    微信小程序账号与工具 在线文档:https://mp.weixin.qq.com/debug/wxadoc/dev/ 小程序开发者账号注册 微信公众平台:https://mp.weixin.qq.co ...

  10. three.js学习4_光源

    Three.Light 首先展示的是使用半球光引用的效果, 光源直接放置于场景之上,光照颜色从天空光线颜色颜色渐变到地面光线颜色.光照主要有 AmbientLight 环境光 DirectionalL ...