
C和指针
文章平均质量分 73
沉迷cpp无法自拔的猪
勿在浮沙筑高台
展开
-
第六章:指针
一、先来看定义式:int a = 300;int b* = &a;这时候b的内存里面存的是a的地址,a的内存地址里面存300。比如这时候设置一个int* c =b;一个指针作为右值,是把它的值交出去,所以c得到了a的地址,如果是作为左值,就是获得右值放入自己的地址内容里。这非常重要!!当然*b就是间接访问,由于b的值是一个地址,然后就可以对这个地址取值,就取了a的值。二、未初始原创 2017-12-08 13:26:32 · 271 阅读 · 0 评论 -
利用随机数函数掷骰子
//首先掷骰子需要概率相等,如果随机数生成0到32767,那么这些值的概率就不是相等的,32766,32767返回的值是0,1会增加概率//所以,一旦出现就重新生成.#include #include #include #include const unsigned int MAX_OK_RAND = (RAND_MAX/6)*6-1;//(int)((((long)RAND_MAX原创 2017-12-07 14:35:17 · 2128 阅读 · 0 评论 -
树用链表实现(链表使用二重指针减少判断以及空间复杂度)
首先定义每一个结点:struct Node{ int value; Node* left; Node* right;};查找函数:Node** find(int i){ Node* tmp; Node** link =&root; while ((tmp=*link) != NULL) { if(tmp->value > i) link = &tmp->left原创 2017-12-07 13:03:42 · 524 阅读 · 0 评论 -
第十七章经典抽象数据结构二:树(数组实现)
二叉搜索树插入:可以首先要判断树是不是为空(针对链表结构是必须的,因为要分配动态内存),然后插入。有2种选择,递归和循环,因为递归是尾部递归,牺牲了空间复杂度获得了可读性,可以转换为循环。删除结点:分为3种情况:1、删除没有孩子的结点,直接删除2、删除只有一个孩子的结点,删除原有结点,指向孩子结点。3、删除有2个孩子的结点,删除左子树的最大结点,把值放在当前结点。代码实原创 2017-12-06 20:49:11 · 256 阅读 · 0 评论 -
第十七章经典抽象数据类型(一)
堆栈,没什么太多要总结的,主要是实现问题,这里自己实现了一下,当然从书本中吸取到的是程序代码效率的提升和assert断言的应用判断。代码的提升在于top_element的初值是0和1,对于push,pop本来就要改变的函数来说没什么变化,但是对于top这样的函数,只需要返回其顶部数据,但是每一次都要-1的话,就会成为很大的困扰,汇编出来的时候,必然会减去1乘以这个数组的类型大小,这就使得效率降原创 2017-12-05 21:17:26 · 199 阅读 · 0 评论 -
第四章:语句与第五章:操作符和表达式
第四章的语句没有什么特别的东西,都是if,while,for,等正常使用的语句,唯一需要注意的是,switch语句中加default语句形成好习惯,之后的学习中会提到使用函数指针来形成转接表代替某些switch操作。goto语句不提倡使用虽然可以从最内层的循环直接跳出,但是很危险,容易产生依赖,跳出内层循环可以以如下的方式进行:enum{exit,ok} status;status =原创 2017-12-05 19:22:06 · 221 阅读 · 0 评论 -
第二、三章小结
第二章主要是阐述了C语言的环境:编译和执行。在编译中基本上编译器分为4部分动作:1.由预处理器进行处理,执行一些文本操作,#define以及#include这些动作2.编译,-s把代码翻译成汇编语言3.汇编,把汇编语言翻译成二进制文件,也就是各个目标代码4.链接,最后把目标代码捆绑在一起,同时引入标准库的函数程序。第三章主要是通过数据来描述各个类型:1.为了保持可移植性原创 2017-12-05 18:23:48 · 201 阅读 · 0 评论 -
第一章:快速上手注意点
给出第一章的源代码,简要的述说一下注意事项(平时在编程中经常会忘记的)#include #include #include #define MAX_COLS 20 /* max # of columns to process */#define MAX_INPUT 1000 /* max len of input & output lines */int read_column原创 2017-12-05 16:39:14 · 253 阅读 · 0 评论 -
第十二章 使用结构和指针
单链表,利用二重指针实现,为什么要用二重指针的过程,双链表的实现,如何简化if else语句,作业题单链表的反转与删除原创 2017-12-08 16:31:20 · 240 阅读 · 0 评论 -
第十章结构和联合、十一章动态内存分配
第十章结构C语言中的结构就是Struct,几个特点注意:1、不能自引用。要用自身必须要用指针。2、复合使用2个结构体,需要在前面使用不完整声明例如struct B;struct A{ struct B;...}struct B{...}3、结构的存储分配需要满足边界对齐条件,如:struct ALIGN{ char a; int b;原创 2017-12-08 16:07:50 · 251 阅读 · 0 评论 -
第九章:字符串、字符和字节
对字符串操作进行一个回顾原创 2017-12-08 15:38:40 · 220 阅读 · 0 评论 -
第七章:函数、第八章:数组
小结函数这一章,分析了数组和指针下标的优劣性,考虑了怎么提高使用指针的效率,多维数组,指针数组的初始化以及函数的形参问题,对于表格,二维数组矩阵的乘法,8皇后问题进行解答原创 2017-12-08 15:06:54 · 263 阅读 · 0 评论 -
第六章课后题:质数Eratosthenes筛选法
#include #include #include #include void isprime(int *a,int n){ memset(a,1,n*sizeof(a[0]));//利用a数组做标记,看这个数是不是不是质数 for (int i = 2; i <= sqrt(n+0.1); i++) { if(a[i]) for (int j = i*i; j <=原创 2017-12-08 13:34:56 · 279 阅读 · 0 评论 -
第十七章经典抽象数据结构四:树的前中后序遍历
#include "tree.h"#include #include #include #include using namespace std;stack mystack;stack poststack;//********************递归版***********************////void do_pre_order(Node* tree){//递归实现原创 2017-12-07 20:52:44 · 270 阅读 · 0 评论