考研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 ...
随机推荐
- SpringBoot初试牛刀
新建 Spring Boot 项目常用的两种方式 你可以通过 https://start.spring.io/ 这个网站来生成一个 Spring Boot 的项目. 你可以选择自己喜欢的依赖进行加载到 ...
- php 投票系统
1.投票主界面(问题界面) <?php$db = new Mysqli("localhost","root","root"," ...
- MyEclipse插件github安装使用
MyEclipse插件github安装使用 网络上的介绍一堆堆的,但是自己尝试了下,发现问题很多,就动手做个教程. 大纲 1.git客户端安装 2.ssh配置 3.egit安装配置 4.参考资料 ...
- Git安装及基本配置
一.在Linux上安装 1.Linux系统安装 使用Linux发布版包含的基础软件包管理工具可以很容易安装Git.例如,在Ubuntu系统上可使用以下指令安装Git: $ sudo apt-get i ...
- java程序题目解析
(选择一项) A: 不能有括号 B: C: 确定最后一位 D: 正确答案是 B 本题考查的是Java数组概念,数组下标是从零开始的,但是数据下标的总量和数据长度相同 (选择一项) A: B: 顺序不 ...
- win10安装mysql过程&&链接过程&&备份和导入数据&&grant命令
win10安装mysql过程&&链接过程&&备份和导入数据&&grant命令 一 .安装 一开始在mysql官网(https://www.mysql ...
- 2-10 就业课(2.0)-oozie:2、介绍和安装1
oozie的安装及使用 1. oozie的介绍 Oozie是运行在hadoop平台上的一种工作流调度引擎,它可以用来调度与管理hadoop任务,如,MapReduce.Pig等.那么,对于Oozie ...
- Java笔记--基础
1.Java中内存的基本结构: 栈(stack):存放局部变量.对象的引用: 堆(heap):new出来的东西(对象) 方法区:常量池等 静态域:全局变量等 变量在其生命周期结束后将出栈,此时堆中的空 ...
- 07.swoole学习笔记--tcp客户端
<?php //创建tcp客户端 $client=new swoole_client(SWOOLE_SOCK_TCP); //连接服务器 $client->connect(,) or di ...
- 五、Vue:使用axios库进行get和post、用拦截器对请求和响应进行预处理、Mock(数据模拟)
一.axios [应用]进行请求和传表单 [axios中文档]:https://www.kancloud.cn/yunye/axios/234845 [vue-axios]:https://cn.vu ...