考研c语言基础 66++6
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的更多相关文章
- C语言基础复习总结
C语言基础复习总结 大一学的C++,不过后来一直没用,大多还给老师了,最近看传智李明杰老师的ios课程的C语言入门部分,用了一周,每晚上看大概两小时左右,效果真是顶一学期的课,也许是因为有开发经验吧, ...
- js-day01-js语言基础
JavaScript简介:JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本 ...
- 第二十四节:Java语言基础-讲解数组的综合应用
数组的综合应用 // 打印数组 public static void printArray(int[] arr) { for(int x=0;x<arr.length;x++) { if(x!= ...
- D14——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D14 20180919内容纲要: 1.html认识 2.常用标签 3.京东html 4.小结 5.练习(简易淘宝html) 1.html初识(HyperText ...
- D10——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D10 20180906内容纲要: 1.协程 (1)yield (2)greenlet (3)gevent (4)gevent实现单线程下socket多并发 2. ...
- day05<Java语言基础--数组>
Java语言基础(数组概述和定义格式说明) Java语言基础(数组的初始化动态初始化) Java语言基础(Java中的内存分配以及栈和堆的区别) Java语言基础(数组的内存图解1一个数组) Java ...
- D02——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D02 20180801内容纲要: 1 字符串的系列操作 2 集合 3 文件的读写 4 字符编码转换 5 小结 6 练习:三级菜单(有彩蛋) 1 字符串的系列操 ...
- Java语言基础(数组)
Java语言基础(数组概述和定义格式说明) A:为什么要有数组(容器) 为了存储同种数据类型的多个值 B:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数 ...
- C语言基础知识-数据类型
C语言基础知识-数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量与变量 1>.关键字 C的关键字共有32个. >.数据类型关键字(12个) char,s ...
随机推荐
- 每个项目中,你必须知道的11个Java第三方类库。
Java第三方library ecosystem是一个很广阔的范畴.不久前有人撰文:每个项目中,你必须知道的11个Java第三方类库. 单元测试 1.DBUnit DBunit是一个基于junit扩展 ...
- 浅谈Spring发展史
1 码农的春天----------Spring来了 Spring官网 :http://www.springframework.org 关于Spring的发展起源要回溯到2002年,当时正是Java E ...
- zookeeper加Kafka集群配置
官方 https://zookeeper.apache.org/doc/r3.5.6/zookeeperStarted.html#sc_Prerequisites https://www.cnblog ...
- PostgreSQL数据库-抽奖sql
select * from users order by random();--会进行随机排序,每次运行都会返回不同的结果 select * from users order by random() ...
- SpringMVC一点简单地源码解析
. 1.1 init(初始化) 在第一次发出请求时,会调用HttpServletBean 的init()方法 org.springframework.web.servlet.HttpServletBe ...
- C# Chart 点击获取当前点击坐标和Series
C# Chart 点击获取当前点击坐标和Series https://blog.csdn.net/wumuzhizi/article/details/47168989 2015年07月31日 13:5 ...
- simplecheck
环境:win10 工具:jadx .夜神模拟器.pycharm 下载好了之后加载到模拟器 输入正确的flag验证 加载到jadx.查看MainAtivity if语句进行验证是否正确,如果正确就输出y ...
- MySQL 中的数据库名称、数据表名称、字段名称
如何查询Oracle,Sql Server,MySQL 中的数据库名称.数据表名称.字段名称 分类: Database2012-09-24 22:16 7034人阅读 评论(0) 收藏 举报 数据库s ...
- 三十二、CI框架之配置域名和设置默认登陆网站
一.打开routes.php文件,将$route['default_controller'] = 'login'; 修改成我们需要的内容. 二.修改config.php中的base_url数据 三.L ...
- 05.Delphi接口的多重继承深入
由于是IInterface,申明了SayHello,需要由继承类来实现函数,相对于03篇可以再精简一下 unit uSayHello; interface uses SysUtils, Windows ...