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. 如何借助 Python 俘获女孩子芳心?

    责编 | 刘静 天气降温,感情却升温了? 上午刚到公司,就收到小Q发来的灵魂拷问: ​ ​ “Q仔!要不然下午请个假!我带你去精神科看看!?”我实在忍不了,脱口而出. 话音未落,前排的运营小花回头看向 ...

  2. Lua生成比较理想的随机数的方法

    lua需要生成随机数的需求也是很常见的,为了生成看起来更随机的数字,我们需要注意以下几点 我们也需要给随机数设置随机数种子:math.randomseed(xx) lua对随机数种子也是有一定要求的: ...

  3. springboot官网->application.properties文件

    springboot application.properties 2.1.6.RELEASE

  4. django中使用ORM模型修改数据库的表名

    在django中,使用models.py创建好一张表后,如果不指定表的名字,那么表的名字就默认为 model_modelname 例如: class Book(models.Model): id = ...

  5. [前端] Vue封装播放器、打包、上传NPM

    一.使用icomoon 1.生成和下载图标相关文件 先使用icomoon获取我们要使用的图标,例如播放.暂停.停止.全屏等图标. icomoon网站:https://icomoon.io/app/#/ ...

  6. python爬虫笔记01

    1.urllib库中request,parse的学习 1.1 简单的请求页面获取,并下载到本地 request的使用 from urllib import request # 获取此网页的demout ...

  7. spingcloud--hystrix(断路器)

    hystrix由来:服务器宕机或者依赖关系失败. hystrix: Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时.异常等,Hyst ...

  8. 关于Arduino MEGA2560 看门狗对bootloader的依赖

    bootloader在Arduino中起着至关重要的位置,arduino-1.5.6-r2版本中的bootloader对看门狗(watchdog)的bug进行了修复:mega2560其实就是使用的AV ...

  9. Vulkan SDK之 FrameBuffer

    The Vulkan Framebuffer Framebuffers represent a collection of memory attachments that are used by a ...

  10. 129-PHP子类不能访问父类private修饰的类成员

    <?php class father{ //定义father类 //定义private修饰的类成员和方法 private $hair='curly hair'; private function ...