1.数据类型

对于基本的数据类型,如整型int,long,...(考研中涉及处理的整数题目,如果没有特别要求用int足够了),字符型char,浮点型float、double...(对于处理小数问题,在题目中没有特殊要求的情况下。用float就可以了)

  (1)结构型

    结构型可以理解为用户自己有的数据类型(int,char,float)为原料制作的数据类型。其实我们常用的数组也是用户自己制作的数据类型。数组有多个相同的数据类型的变量组合起来

int a[maxSize];  //maxSize是已经定义的常量

    该语句就定义了一个数组,名字为a,就是将maxSize个整型变量连续地摆在一起,其中个整型变量之间的位置关系通过数组下标来反应。

    结构体就是系统提供给程序员制作新的数据类型的一种机制,既可以用系统已经有的不同基本数据类型或用户定义的结构型,组合成用户需要的复杂数据类型。

    例如制作一个有不同类型的变量组成的数组可以进行如下构造,使用结构体:

typedef struct
{
int a;
char b;
float c;
}TypeA;

    上面的语句制造了一个新的数据类型,即TypeA型。访问一个int  a[3]的方法为---->  a[0],a[1],a[2];

                           访问TypeA  b的方法为,b.a,b.b,b.c;

   (2)  指针型

    指针型和结构型一样,是比较难理解的部分。对于其他类型的变量,变量里所有装的是数据元素的内容,而指针型变量里装的是变量地址,通过他可以找出这个变量在内存中的位置,就像一个指示方向的指针,指出了某个方向的位置。因此叫做指针型。

    指针型的定义法对每种数据类型都有特定的写法,有专门指向int型变量的指针,也有专门指向char型变量的指针。

int *a;    //对比一下定义int型变量的语句:int  a;
char *b; //对比 一下定义char型变量的语句: char b;
float *c; //对比一下定义float型变量的语句: float c;
TypeA *d; //对比一下定义TypeA型变量的语句:TypeA d;

    由上可以看出定义指针型变量只是多出了一个“*”而已。

    如果a是一个指针型变量,且它已经指向了b,则a中存放的变量b所在的地址。*a就是取变量b的内容(x=*a;,等价于x=b;)&b就是取变量b的地址,语句a=&b;就是将变量b的地址存于a中,即大家常说的指针a指向b。

    指针型在考研中用得最多的就是和结构型结合起来构造结点(如链表的结点,二叉树的结点等)

   (3)结点的构造

    要构造一种结点,必须先定义结点的结构类型。下面介绍链表结点和二叉树结点结构型的定义方法。

    1)链表结点的定义:

      链表的结点有两个域:一个是数据域,一个是指针域;指针域是用来存放下一个结点的位置。

链表的定义如下

typedef struct Node
{
int data; //这里默认的是int型的,如需其他类型可以修改
struct Node *next; //指向Node型变量的指针
}Node

    上面这个结构型的名字为Node,因为组成此结构体的成员中有一个指向自己类型相同的变量的指针,内部要用自己来定义这个之后怎么,所以写成struct Node *next;

    2)二叉树结点的定义:

      在链表结点结构型的基础上,在加上一个指向自己同一类型变量的指针域,即二叉树结点结构型:

typedef struct BTNode
{
int data ; //这里默认是int型,如需其他类型可修改
struct BTNode *lchild; //指向左孩子
struct BTNode *rchild; //指向右孩子
}BTNode

    在考研数据结构中,只需要熟练掌握(链表,二叉树)的定义方法,其他结点都是有这两种衍生出来的。

    知道了链表结和二叉树结点定义方法。结构型定义好之后,就要用它来制作新节点了。

    以二叉树为例,有以下两种写法:

. BTNode BT;

. BTNode *BT;
BT = (BTNode*)malloc(sizeof(BTNode)); //此句要熟练掌握

1中只用了一句制作了一个结点,而2中需要两句,比1要繁琐,但是考研中用的多的是2。2的执行过程还是:先定义一个结点的指针 BT,然后用函数malloc()来申请一个结点的内存空间,最后让指针BT指向这篇内存空间,2中的第二局就是用系统已有的函数malloc()申请新的内存空间的方法。

  (4)关于typedef和#define

    1)typedef。

      typedef可以理解为给现有的数据类型起一个新的名字。例如 typedef  int  A;则A的作用于int相同  即A  a=1;成立

    2)#define

      #define宏定义,即常量的定义,但是define在考研数据结构中没有帮助,我们只需认识他就行。例如:#define maxSize 50 这句,定义了常量maxSize(此时x=50;等价于x=maxSize; )在写程序解答题时,如果要定义一个数组,如int  A[maxSzie];,加上一句注释/*maxSize为已经定义好的常量,值为50*/即可。

2.函数

  只要是设计算法题,就要用到函数,所以有必要介绍一下注意事项。

  (1)被传入函数的参数是否会改变

int a;
void f(int x)
{
++x;
}

上面定义的函数需要一个整型变量作为参数,并且在自己的函数体中将参数做自增1的运算。执行完以下程序后a的值会改变吗?

a=;   //
f(a); //

有些同学以为答案是1。这个答案是错误的,可以这样理解,对于函数的f(),在调用它的时候,括号里的变量a和1中变量a并不是同一个变量。在执行2的时候,变量a只是把自己的值赋给了一个在赋f()的定义过程中已经定义好的整形变量,假设为x,即2执行过程拆开看来是这样两句:x=a;和++x;,因此a的值在执行完1、2两句之后不变

考研c语言基础 66++6的更多相关文章

  1. C语言基础复习总结

    C语言基础复习总结 大一学的C++,不过后来一直没用,大多还给老师了,最近看传智李明杰老师的ios课程的C语言入门部分,用了一周,每晚上看大概两小时左右,效果真是顶一学期的课,也许是因为有开发经验吧, ...

  2. js-day01-js语言基础

    JavaScript简介:JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本 ...

  3. 第二十四节:Java语言基础-讲解数组的综合应用

    数组的综合应用 // 打印数组 public static void printArray(int[] arr) { for(int x=0;x<arr.length;x++) { if(x!= ...

  4. D14——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D14 20180919内容纲要: 1.html认识 2.常用标签 3.京东html 4.小结 5.练习(简易淘宝html) 1.html初识(HyperText ...

  5. D10——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D10 20180906内容纲要: 1.协程 (1)yield (2)greenlet (3)gevent (4)gevent实现单线程下socket多并发 2. ...

  6. day05<Java语言基础--数组>

    Java语言基础(数组概述和定义格式说明) Java语言基础(数组的初始化动态初始化) Java语言基础(Java中的内存分配以及栈和堆的区别) Java语言基础(数组的内存图解1一个数组) Java ...

  7. D02——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D02 20180801内容纲要: 1 字符串的系列操作 2 集合 3  文件的读写 4 字符编码转换 5 小结 6 练习:三级菜单(有彩蛋) 1 字符串的系列操 ...

  8. Java语言基础(数组)

    Java语言基础(数组概述和定义格式说明) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数 ...

  9. C语言基础知识-数据类型

    C语言基础知识-数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量与变量 1>.关键字 C的关键字共有32个. >.数据类型关键字(12个) char,s ...

随机推荐

  1. 每个项目中,你必须知道的11个Java第三方类库。

    Java第三方library ecosystem是一个很广阔的范畴.不久前有人撰文:每个项目中,你必须知道的11个Java第三方类库. 单元测试 1.DBUnit DBunit是一个基于junit扩展 ...

  2. 浅谈Spring发展史

    1 码农的春天----------Spring来了 Spring官网 :http://www.springframework.org 关于Spring的发展起源要回溯到2002年,当时正是Java E ...

  3. zookeeper加Kafka集群配置

    官方 https://zookeeper.apache.org/doc/r3.5.6/zookeeperStarted.html#sc_Prerequisites https://www.cnblog ...

  4. PostgreSQL数据库-抽奖sql

    select * from users order by random();--会进行随机排序,每次运行都会返回不同的结果 select * from users order by random() ...

  5. SpringMVC一点简单地源码解析

    . 1.1 init(初始化) 在第一次发出请求时,会调用HttpServletBean 的init()方法 org.springframework.web.servlet.HttpServletBe ...

  6. C# Chart 点击获取当前点击坐标和Series

    C# Chart 点击获取当前点击坐标和Series https://blog.csdn.net/wumuzhizi/article/details/47168989 2015年07月31日 13:5 ...

  7. simplecheck

    环境:win10 工具:jadx .夜神模拟器.pycharm 下载好了之后加载到模拟器 输入正确的flag验证 加载到jadx.查看MainAtivity if语句进行验证是否正确,如果正确就输出y ...

  8. MySQL 中的数据库名称、数据表名称、字段名称

    如何查询Oracle,Sql Server,MySQL 中的数据库名称.数据表名称.字段名称 分类: Database2012-09-24 22:16 7034人阅读 评论(0) 收藏 举报 数据库s ...

  9. 三十二、CI框架之配置域名和设置默认登陆网站

    一.打开routes.php文件,将$route['default_controller'] = 'login'; 修改成我们需要的内容. 二.修改config.php中的base_url数据 三.L ...

  10. 05.Delphi接口的多重继承深入

    由于是IInterface,申明了SayHello,需要由继承类来实现函数,相对于03篇可以再精简一下 unit uSayHello; interface uses SysUtils, Windows ...