02 2019 档案
摘要:动态内存分配 1.1 为什么使用动态内存分配 直接声明数组的方式的缺点: 1) 声明数组必须指定长度限制.无法处理超过声明长度的数组. 2) 如果声明更大的常量来弥补第一个缺点,会造成更多的内存浪费. 3)如果输入数组的数据超过来数组的容纳范围,程序必须以一种合理的方式作出响应.但是程序员一般不会做
阅读全文
摘要:1、链表 链表(linked list)即使是一些包含数据的独立数据结构的(Node)集合. 链表中的每个节点通过链或指针链接在一起. 程序通过指针访问链表中的节点. 节点通常是动态分配的,但也有由节点数组构建的链表(即使这样,程序也是通过指针来遍历链表). 1.1 单链表 单链表中,每个节点包含一
阅读全文
摘要:1、结构 1.1 结构声明 在声明结构时,必须列出它包含的所有成员.这个列表包括每个成员的类型和名称. struct tag {member list} variable list; 例如 注意:这两个声明会被编译器当作两种截然不同的类型,即使他们的成员列表完全相同. 下面这跳语句是非法的 ~~z
阅读全文
摘要:1、字符串 C语言没有字符串数据类型,因为字符串以字符串常量的形式出现或存储于字符数组中. 字符串常量和适用于那些程序不会对他们进行修改的字符串. 所有其他字符串都必须存储于字符串数组或动态分配的内存中. 字符串是一个或多个字符,并且以一个位模式全0 的NUL字节结尾 头文件 string.h 包含
阅读全文
摘要:优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式)函数名(形参表) . 成员选择(对象) 对象.成员名 -> 成员选择(指针) 对象指针->成员名 2 - 负号运算符 -表达式 右到左 单目运算符 (类型) 强制类型转换
阅读全文
摘要:1.1 一维数组 一维数组的声明: int a[10]; 这里a就是一个数组. 数组a的类型就是一个指向整型的常量指针. 但是数组和指针是 不相同 的. 数组具有特定数量的元素,而指针只是一个标量值. 只有但数组名在表达式中使用时,编译器才会为它产生一个指针常量.(注意是指针常量,不是指针变量) 1
阅读全文
摘要:1、可变参数表是通过宏实现的 宏定义于stdarg.h头文件,它是标准库的一部分.这个头文件声明了一个类型var_list和三个宏 va_start、va_arg、va_end. 我们可以声明一个类型为va_list的变量,与这几个宏配合使用,访问参数的值. 参数列表在函数中用三点省略号(...).
阅读全文
摘要:1、递归 C通过运行时堆栈支持递归函数的实现. 递归函数就是直接或间接调用自身的函数. 一个小例子: 2、两个递归运用和用迭代优化的例子 尾递归:递归调用出现在函数的尾部,并且之后不再执行任何任务 尾递归可以方便的转换为迭代.由于递归是非常耗费内存的(每次函数调用都会在内存中分配空间),内存频繁的分
阅读全文
摘要:1、函数的定义 函数的定义就是函数体的实现. 语法: 类型 函数名( 形式参数 ) 代码块 函数返回类型和函数名分开写是代码风格的问题,现代语言如swift返回值在函数名和参数表的后面,这样使得某些工程工具追踪源代码时更容易查找函数名. K&RC 的旧式声明: int find_int(key, a
阅读全文
摘要:```C / 查找字符串 source 中 是否有指定的子串出现,如果有返回第一个匹配的字符 @param source 源 @param chars 目标 @return 返回值 / char find_char0(char const source, char const chars) { if
阅读全文
摘要:1、 \ p++ 最常用的一个指针的用法,就是在循环中用来迭代. p++ 共有3步操作: 1、++操作符把p所指向的内存中的值复制一份 2、++操作符把p加1(实际是一个p所指内存单元的大小,这也是编译器这么做使得用指针来迭代成为能) 3、\ 操作符对p的拷贝(未加1之前的地址)做间接访问(也就是取
阅读全文
摘要:1、移位操作符 移位操作符分为左移操作符( ) 对于无符号数:左右位移操作都是逻辑位移 对于有符号数:到底是采用逻辑位移还是算术位移取决于编译器.如果一个出现使用了有符号数的右移操作,它就是不可移植的. 对于左移操作:右边空出来的位数用0补齐. 对于右移操作:如果是逻辑位移,左边移入的位用0填充;如
阅读全文
摘要:1、变量范围 limits.h 头文件中定义来C 语言的变量范围. 变量范围的限制 输出结果 注意:不管是int,还是 long int, long long int无符号整型的最大范围都是 1.因为计算机内负数是补码表示的,对计算机来说, 1最大.
阅读全文
摘要:1、变量的声明 声明变量的基本形式: 说明符号(一个或者多个) 声明表达式列表 说明符 (specifier) 包含一些关键字,用于描述被声明的标识符的基本类型,它也可用户改变标识符的缺省存储类型和作用域. 如: 修改变量的长度或者是否为有符号数的关键字: 相等的整型说明 | 有符号 | 无符号
阅读全文
摘要:1、指针常量(pointer constant) 一般是没有这个概念的,指针类型的常量理解起来可以看着指针类型的常量,常用 0xff123456 表示,我们一般不会这么做.因为程序员一般无法事先知道计算机中的一个可用的地址,然后给他赋值,况且指针常量表达式也没有关于所指变量的类型的任何信息
阅读全文
摘要:1、浮点型 浮点数家族包括:float,double,long double. ASCII标准规定:long double 至少和 double 一样长,而 double 至少和float 一样长.同时规定浮点数范围:所有浮点数类型至少能够容纳从$10^{ 37}$到$10^{37}$之间的数.
阅读全文
摘要:1、C语言基本数据类型-整型 仅有4中机泵数据类型:整型,浮点型,指针,聚合类型(数组和结构) 整型家族:字符,短整型,整型,长整型.(都分有符号[singed]和无符号[unsinged]) 短整型,整型,长整型之间的大小规则: 长整型至少应该和整型一样长,而整型至少应该和短整型一样长. 也可参考
阅读全文
摘要:环境 python 3.7 使用pip 安装falsk
阅读全文
摘要:课后的几个问题: 1) int x/*blah blah*/y; 会有什么问题? 答:编译器报错,语句中不应该有多行注释 单行注释也应该放到语句后面或者独自占一行. 2)打出下面一行字符串(包括引号)会出现什么问题. "Blunder??!??" 答:在Xcode中不会出现问题.但是由于三字母词(t
阅读全文
摘要:算法精讲中用c语言定义链表数据结构很具有通用性. C++一般为节省空间中好多人这样搞.只定义一个节点的结构.当然也可以定义全一点. C中通用做法 C 语言 完整的定义 //list.h //list.c
阅读全文
摘要:1、连续接收输入字符时 int ch; while(ch != EOF && ch != '\n') ch 为什么被声明为整形,我们不是需要用它来读取字符的嘛? 因为:EOF是一个整形值,它的位数比字符类型要多,把ch声明为整型可以防止从输入读取的字符意外地被解释为EOF。但这也意味着接收字符的ch
阅读全文
摘要:C语言中点操作符(.)和箭头操作符(->) 点说语法不太准确,许多都称该之为点运算符/操作符,箭头运算符/操作符。但是OC中叫点语法,感觉理解起来还蛮舒服。毕竟基础的C操作符中是 相同点 两个都是二元操作符,其有操作符是成员的名称。 不同点 点操作符左边的操作数是一个“结果为结构”的表达式; 箭头操
阅读全文
摘要:C语言中gets(), scanf()区别 相同点: gets()和 scanf() 1、函数都可用于输入字符串 2、都在stdio.h头文件中定义。 3、字符串接受字符结束后自动加'\0' 不同点: 1、gets() 可以接受space,Tab等键盘输入,遇到enter结束输入; scanf()不
阅读全文