摘要:
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 题解: java public static void find(int target,int[ 阅读全文
摘要:
[TOC] 1、Linux 简介 2、CentOS简介 CentOS是将RHEL发行版源码重新编译形成的二进制版本,由于LInux源码遵循GNU协议,所以从获得RHEL源码编译成CentOS是合法的。新的发行版里将RedHat的商标去掉。 3、文件和目录操作 3.1 基本shell操作 3.1.1 阅读全文
摘要:
函数设计原则 + 函数从意义上应该是一个独立的功能模块 + 函数名要在一定程序上反映函数的功能 + 函数参数名要能够体现参数的意义 + 尽量避免在参数中使用全局变量 + 如果函数参数不应该在函数体内部被修改时,应该加上const声明 + 如果参数是指针,且仅作为输入参数,则应该加上const声明 + 阅读全文
摘要:
递归的数学思想 + 递归是一种数学上分而自治的思想 + 递归需要有边界条件 + 当边界条件不满足时,递归继续进行 + 当边界条件满足时,递归停止 + 递归将大型复杂问题转化为与原问题相同但规模较小的问题进行处理 递归函数 + 函数体内部可以调用自己 + 递归函数 + 函数体中存在自我调用的函数 + 阅读全文
摘要:
函数与宏 + 宏是由预处理期直接替换展开的,编译器不知道宏的存在 + 函数是由编译器直接编译的实体,调用行为由编译器决定 + 多次使用宏会导致最终可执行程序的体积增大 + 函数是跳转执行的,内存中只有一份函数体存在 + 宏的效率比函数要高,因为是直接展开,无调用开销 + 函数调用时会创建活动记录,效 阅读全文
摘要:
参数入栈顺序 + 函数参数的计算次序是依赖编译器实现的, 问:函数参数的入栈次序是如何确定的呢? 调用约定 + 当函数调用发生时 + 参数会传递给被调用的函数 + 而返回自会被返回给函数调用者 + 调用约定描述参数如何传递到栈中以及栈的维护方式 + 参数传递顺序 + 调用栈清理 + 调用约定是预定义 阅读全文
摘要:
函数参数 + 函数参数在本质上与局部变量相同在栈上分配空间 + 函数参数的初始值是函数调用时的实参值 函数参数的求值顺序依赖于编译器的实现 下面的程序输出什么?为什么? 小结 + 函数的参数在栈上分配空间 + 函数的实参并没有固定的计算次序 + 顺序点是C语言中变量修改的最晚时机 阅读全文
摘要:
常见内存错误 + 结构体成员指针未初始化 + 结构体成员指针未分配足够的内存 + 内存分配成功,但并未初始化 + 内存操作越界 内存操作的交通规则 动态内存申请之后,应该立即检查指针值是否为NULL , 防止使用NULL指针。 free指针之后必须立即赋值为NULL。 任何与内存操作相关的函数都必须 阅读全文
摘要:
C语言中的函数 函数的由来: 程序 = 数据结构 + 算法 C程序 = 数据 + 函数 函数用来定义算法 函数的意义 模块化程序设计 面向过程的程序设计 + 面向过程是一种以过程为中心的编程思想 + 首先将复杂的问题分解为一个个容易解决的问题 + 分解过后的问题可以按照步骤一步步完成 + 函数是面向 阅读全文
摘要:
野指针 + 指针变量中的值是非法的内存地址,进而形成野指针 + 野指针不是NULL指针,是指向不可用内存地址的指针 + NULL指针并无危害,很好判断,也很好调试 + C语言中无法判断一个指针所保存的地址是否合法 野指针的由来 + 局部指针变量没有被初始化 + 指针所指向的变量在指针之前被销毁 + 阅读全文