C 语言学习笔记 - 指针和数组

C 语言中的数组名代表存放数组元素的连续存储空间的首地址,即指向数组中第一个元素的指针常量; 数组的下标运算符 [] 实际上就是以指针作为其操作数的,例如 a[i] 被编译器解释为表达式 *(a+i); 指向整型数据的指针变量 p,并使其值为数组 a 的首地址,则:p+1 与 p++ 本质上是两个不同的操作,虽然二者都对指针变量 p 进行加 1 运算,但 p+1 并不改变当前指针的指向...
Coding

C 语言学习笔记 - 字符串

"a" 是字符串常量,'a' 是字符常量; 字符串实际就是由若干有效字符构成且以 '\0' 作为结束的一个字符序列; 一个字符型数组中存储并非一定是一个字符串,这要看它的最后一个元素是否为 '\0'。字符串结束标志 '\0' 也占一个字节的内存,但它不计入字符串的实际长度,只计入数组长度; 当省略对数...
Coding

C 语言学习笔记 - 指针

变量的地址:变量在内存中所占存储空间的首地址; int *pa, *pb; 指针变量的定义只是声明了指针变量的名字及其所能指向的数据类型,并没有说明指针的变量究竟指向了哪里; 习惯上在定义指针变量的同时将其初始化为 NULL (在 stdio.h 中定义为零值的宏); 指针变量的值是一个地址,同时自身也有一个地址,存储该地址值; 指针变量只能指向同一基类型的变量; int *p...
Coding

C 语言学习笔记 - 数组

在定义数组时不能使用变量定义数组的大小,即使在此之前变量已被赋值,也不允许这样定义。虽然 C99 允许,但教材以 C89 为准; 定义但未进行初始化的数组元素的值为随机数,当数组被声明为静态或外部存储类型时,则自动初始化为 0; 编译程序不检查数组下标值是否越界,一旦越界,将访问和修改数组以外的空间; 用 sizeof 运算符来计算一个类型或者变量在内存中所占的字节数才是最准确可靠的...
Coding

C 语言学习笔记 - 函数

预先估算运算结果的可能取值范围,采用取值范围更大的类型定义变量,对于防止类型溢出是十分必要的; 通常变量名用小写字母开头的单词组合而成(“名词”或者“形容词 + 名词”),函数名则用大写字母开头的单词组合而成(“动词”或者“动词 + 名词”); 形式参数是内部变量,只能在函数体内访问; 若函数不需要入口参数,则需用 void 代替函数头部中形参表中的内容,它告诉编译器该函数不接收来自...
Coding

C 语言学习笔记 - 选择控制结构 & 循环控制结构

选择控制结构 数据结构 + 算法 = 程序 数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合 算法是对操作或行为(即操作步骤)的描述 衡量算法的正确性:有穷性、确定性、有效性、允许没有输入或多个输入、必须有一个或多个输出; 算法的描述方法:自然语言、流程图、NS 结构化流程图、伪码,养成先画流程图、然后再编写代码的习惯; C 语言中,非 0...
Coding

C 语言学习笔记 - 键盘输入和屏幕输出

'\r' 表示回车,但不换行,即将光标移到当前行的起始位置; 转义序列出现在字符串中时是按单个字符计数的,如 abc\n 的长度是 4; 每个字符都有一个等价的整型值与其相对应,这个整型值就是该字符的 ASCII 码,可将 char 型看成是一种特殊的 int 型,如英文字符的大小写转换,大写 + 32 即为小写; Unicode 字符集为各种语言中的额每个字符设定统...
Coding

C 语言学习笔记 - 运算符和表达式

整数与浮点实数运算时,其中的整数操作数在运算之前被自动转换为了浮点数; 求余运算限定参与运算的两个操作数必须为整型,不能对两个实型数据进行求余运算; ++x Prefix 运算符是在变量使用之前线对其执行加 1 操作; x++ Postfix 运算符是先使用变量的当前值,然后对其进行加 1 操作; 提倡在一行语句中一个变量最多只出现一次增 1 或减 1 运算; 宏常量没有数据类型...
Coding

C 语言学习笔记 - 数据类型

以知识点的形式来记录,方便空闲时看看加深印象 字符型常量、变量用单引号: 'a' 字符串常量、变量用双引号: "abc" 默认的 int 型定义为有符号整数 变量的类型决定了编译器为其分配内存单元的字节数、数据在内存单元中的存放形式、该类型变量合法的取值范围以及该类型变量可参与的运算种类 标识符用于标识内存中一个具体的存储单元,区分大小写 ...
Coding