摘要:对于二维数组,我们知道可以用Type ArrayName[Row][Colume]的方式来定义,这是一种静态内存开辟的方式,程序在编译的时候就为该数组分配了空间,而且行和列大小也是指定的。这篇文章里我们来看看二维数组动态内存开辟,开辟空间的大小是运行时才知道,这样可以更实现功能是可以更灵活。 首先我
阅读全文
摘要:一维数组可以看作一行连续的数据,只有一个下标。C语言允许构造二维数组甚至多维数组,在实际问题中有时候常常需要用到二维数组(例如数学上的矩阵),二维数组有两个下标,以确定某个元素在数组中的位置。 (一)二维数组的定义 二维数组定义一般的格式是: DataType ArrayName[Row][Colu
阅读全文
摘要:(一)数组的内存布局 对于语句int a[5]; 我们明白这里定义了一个数组,数组里有5个元素,每一个元素都是int类型,我们可以用a[0],a[1]等访问数组里的元素,但是这些元素的名字就是a[0],a[1]吗? 请看下面的内存布局图: 如上图所示,当我们定义一个数组int a[5],编译器根据指
阅读全文
摘要:写好c语言,漂亮的宏定义是非常重要的,我们在阅读别人工程时,往往能看到大量的宏定义,宏定义可以增加代码的可读性,也能增加代码的可移植性,一个好的宏定义甚至是一件艺术品。今天我们就来看看宏定义的方方面面。 (一) 宏 vs 函数 在软件开发中过程中,经常有很多重复使用的代码段或功能模块,这些功能既可以
阅读全文
摘要:我们首先来看几个概念: 线性数据结构的特点: (1)存在唯一的一个被称作“第一个”的数据元素; (2)存在唯一的一个被称为“最后一个”的数据元素; (3)除第一个之外,集合中的每个数据元素均只有一个前驱; (4)除了最后一个之外,集合中每个数据元素均只有一个后继。 线性表: 线性表是最基本、最简单、
阅读全文
摘要:想必很多人都看过“头文件中的 #ifndef #define #endif 防止该头文件被重复引用”。但是是否能理解“被重复引用”是什么意思?是不能在不同的两个文件中使用include来包含这个头文件吗?如果头文件被重复引用了,会产生什么后果?是不是所有的头文件中都要加入#ifndef/#defin
阅读全文