【转】【C\C++语言入门篇】 结构体
前面两篇基本把指针给介绍完了,相信大家对指针已经不是那么陌生了。也不会因为指针和数组之间的关系而导致混淆了。大家可能也迫不及待想了解下后来的知识。今天我们就介绍下结构体。
对于结构体,既然叫结构体,形象上我们可以理解其就是一堆数据集合在一起形成一个结构。就比如一个学生的信息包括:学号、姓名、班级、年龄等等。这些信息都是属于这个学生的,因此我们就可以将这些信息统一绑定在一起。形成一个学生实体,这里有点C++的味道。我们学C也还是有必要这样思考。在我们周围几乎每一样东西都有它自己的信息或者组成。比如药品,它有什么功效,有什么成分等等都能统一绑定在一起形成一个实体,我们在程序中就能方便的访问这些实体的每一个信息或组成。因此,当我们在设计一个程序的时候,我们就能把一些具有共同特性或者组成元素集合到一起构成一个结构体。比如我们的学生就可以写成:
struct SStudent
{
char name[ 13 ]; // 姓名
char className[ 16 ]; // 班级名
char age; // 年龄
....
};
这样一来,学生这个活生生的实体就把所有关于他的信息集中在一起了。这样就能集中管理了,里面的每一个信息就能通过结构体变量来访问。先看看怎么访问:
C语言:
struct SStudent student;
student.age = 22;
C++:
SStudent student;
student.age = 22;
从上面可以看出要访问一个结构体成员是很方便的,同时也体现了实体的概念。我们将学生实体的年龄信息取出来赋值为22岁。就好像在使用某个东西的某个功能一样。这也是众多面向对象语言的一种思想。就是将程序数据封装话、结构化,我们要操作一个数据就跟现实生活中的使用某个工具的某个功能一样。我们看到上面C和C++版本访问唯一不同的就是C++版本在声明结构体变量的时候不需要在前面加上struct关键字,个人觉得后来C++觉得s
相关文档:
Boss说,要看OpenGL,看了快一个月,总算出了个像样的东西,用C写了个3D迷宫,
虽然只有350行
代码,不过边学边写,足足写了一周时间,还是小有成就感的,活活活!
&n ......
预备知识—程序的内存分配
一个由C/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 ......
一、函数调用的基本步骤
函数调用大致包括以下几个步骤。
(1)参数入栈:将参数从右向左依次压入系统栈中。
(2)返回地址入栈:将当前代码区调用指令的下一条指令地址压入栈中,供函数返回时继续执行。
(3)代码区跳转:处理器从当前代码区跳转到被调用函数的入口处。
(4)栈帧调整:具体包括:
保存当前栈帧状态 ......
这里收集一些C语言使用中的高级技巧,这些技巧都是一些基本语法的巧妙使用,但是首次看到这样的用法会感觉眼花缭乱。
一、main函数的封装
在一些库中,为了集成度更高,往往会把main函数封装到库中,而提供给用户使用的是另一个自定义函数,这时候就会用到main函数的封装了,这里使用的是宏定义的技巧:
#define MyMain ......