C 语言中的多维数组与我们在数学中学习到的多维数组是一致的。如果你还不知道什么是多维数组也没有关系。多维数组可以看成是之前学习过的数组的扩展。它能让你完成一些仅仅依靠一维数组没有办法完成的事情。让很多事情完成的更为简单。 1. 多维数组的声明 多维数组可以看作是一维数组的扩展。所以,它的声明就是在之前学习的数组,也叫一维数组,之后继续添加大括号,如果添加一组大括号,那么称之为二维数组,以此类推,就
do-while 循环语句是 C 语言中最常用的三种循、环语句之一。但也是最容易与前面的 while 循环混淆的循环语句。 1. do-While 循环的语法 do { // 循环执行的语句 }while( 循环条件 ) 2. do-While 循环的执行过程 3. do-while 循环的使用场景 当需要先执行一次循环体内部的语句,然后再进行是否再次执行循环语句的时候使用。这有点像你吃
计算机和人类发明的算盘一样,是一种计算工具。而计算机的发明就是要将人类从简单重复劳动中解放出来,所以计算机特别善于进行简单而需要大量人力才能完成的工作。 循环的做一件事情就是这样一种简单而需要耗费大量精力才能完成的一件事情。而且人工在处理这个事情的时候,还会经常出现各种错误。 循环作为计算机程序设计语言中基本的流控制语言,包含在几乎所有的程序中。比如我们常见的累加,计数,等等都是可以通过循环来完成
多重分支是组成分支结构的重要语句,甚至比单独的 if 语句用的更广泛一些。 1. 语法 if (条件判断) { 满足上述条件要执行的语句 } else { 不满足上述条件要执行的语句 } 执行过程 2. 场景 当需要程序作出不同的选择,并在选择后要分别执行不同的程序的时候使用。这有点像我们经常遇到非此即彼的选择。也就是如果你好好学习就会收到奖赏,否则你会…… 此处省略很多字。因为
C 语言与大多数计算机语言一样是按照语句的顺序逐条执行的。如同流水一样,从上到下顺序执行。这就如同我们每天的日常生活,对于上班族来说,就是起床,洗漱,吃早饭,上班,午饭。下班,晚饭,睡觉。感觉一切都平淡无奇。但是如果你想去购买一台电脑怎么办?这不是一件每天都发生的流水事件,而且你需要在有足够的钱的情况下才能购买。这个时候,你就要在满足有钱的条件下打破原有的生活顺序,去卖场购买一台电脑。这就是生活中
在 C 语言中,相同的数字可以用不同的数制来表示。也就是十进制的数字可以等价的表示为二进制或者十六进制。那么对于二进制来说,可以进行逐个数字之间,也就是每一个数字位的运算。这种运算也广泛的存在我们日程使用的数字电路中。其实计算机的运算原理最底层就是位运算,也就是 0 和 1 的运算。 1. 位运算符 运算符 作用 示例 & 位与 a&b | 位或 a|b ^ 位异或 a^b ~ 位非 ~b <<
我们在前面学习了 C 语言的数据类型,那么变量在参与运算的时候类型是始终如一不变的吗? 带着这个疑问,我们可以先看一个例子: #include <stdio.h> #define typename(x) _Generic((x), /* Get the name of a type */
输入就是将程序外部的数据输入到程序内部,输出就是将程序内部运行的结果等内容从程序内部输出到显示器,打印机或者存放到文件中。 编程语言中的输入输出担负着程序与用户的交互工作。 1. 标准输入输出 C 语言中的标准输入输出包含 3 部分。标准输入,标准输出,标准错误输出。 表中列举了标准输入输出和与之关联的物理设备。 输入输出 设备 标准输入 键盘 标准输出 显示器屏幕 标准错误输出 显示器屏幕 标准
对于 C 语言的变量类型这里有两种说法: 一种是只包含基础的变量类型,如整数型,浮点型等;另外一种则是在上述类型的基础上还包含了一些用户可以定义的复合的类型,如 array,structure 等等。 我们这里只介绍大家通常意义上所认识的前一种基本的 C 语言数据类型。更为复杂的这些数据组合的结构,我们会在后面单独列出。 1. 变量类型 因为 C 语言与需要编译之后才能执行,所以需要对变量指定类型
结构体字节对齐 接下来我们学习的C中的第三种空间-结构体空间,结构体空间是将基本数据类型或者是其它构造数据类型打包的工具。打包就是结构体最主要的一种功能,在打包过程中,我们要引入一个新的概念-字节对齐。这个打包不是随随便便就OK的,不像我们装行李只要全部装进去就好了。 首先我们先来看一段代码,我们将一个结构体里面包含了一个char和int类型,然后声明一个结构体变量,这个变量在内存中占的大小会是1
指针逻辑运算符操作 指针变量存储的是一个地址,可以将它理解成一个数值。只是编译器会因为它是一个指针类型而将它读取作为一个地址。逻辑运算符包括>=,<=,==,!=;显然我们比较两个地址的数值的大小是没有意义的。 指针中最常用的逻辑操作符==,!=这两个是最常用的。 我们将0x0规定为地址的无效值,结束标志。NULL就是一个在C编译器中一个被定义好了的宏,它代表了这个无效地址。我们经常使用p==NU
指针运算符加减举例 测试代码如下 首先定义了两个十六进制的int类型的变量,将变量b的地址赋给了p1,将b的变量中的四个字节取小地址的字节(指向99的字节)赋给了char类型的指针p2,我们前面在进行不同类型的赋值的时候是有警告的,有些编译器直接会报错,编译通不过的。这里我们进行了强制类型的转换,就告诉了编译器,这个不同类型的赋值我们作为程序员是故意而为之的,编译器就不会再对这里报错了。 运行结果
指针运算符加减标签操作 指针作为一种特殊的变量,它的运算和普通变量是有一定区别的。指针在运算中并没有具备其它变量所有的性能。我们只是给大家介绍一些指针常用的运算: 加法运算(+,++) 我们知道一个整型的变量可以为它做加法运算,那么指针变量加1之后是一个地址还是一个整型? int *p=xxx; [0x12] //有一个int类型的指针,它的指针变量存储的地址为0x12。 p=p+1; 由于p是
前面我们给出了一段完整的C语言代码,就是在显示器上输出“C语言中文网”,如下所示: #include <stdio.h> int main(){ puts("C语言中文网"); return 0; } 本节我们就来看看如何通过 VS2015 来运行这段代码。 1) 创建项目(Project)在 VS2015 下开发程序首先要创建项目,不同类型的程序对应不同类型的
程序员用各种编程语言编写指令,有些是计算机直接理解的,有些则需要中间翻译(tranlation)的步骤。如今使用的计算机语言有几百种,可以分为三大类: 机器语言 汇编语言 高级语言 任何计算机只能直接理解本身酌机器语言(machine language)。机器语言是特定计算机的自然语言,由计算机的硬件设计定义。机器语言通常由一系列数字组成(最终简化0和1),让计算机一次一个地执行最基本的操作。机器