![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言复习
hixiaowen
这个作者很懒,什么都没留下…
展开
-
C复习笔记(码制和溢出)
1、关于补码: (1)正数的补码是其原码 (2)负数得补码是其绝对值原码的基础上进行按位取反再末位加1 (3)一个数的补码进行按位取反再末位加1得到该数的相反数的补码 2、有符号数可以表示为一个数轴,以0为原点,32767为最大值,最大值加1得到最小值的补码-32768,最小值减1得到最大值原创 2012-04-11 11:18:34 · 285 阅读 · 0 评论 -
枚举类型
1、有时候需要这样的变量,该变量只取有限个离散值。 2、这个时候可以定义枚举类型enum 类型名{取值列表}; 3、定义枚举类型变量:enum 类型名 变量名=一个取值; #include int main(void) { enum weekday{sun,mon,tue,wed,thu,fri,sat}; enum weekday day=sun; p原创 2012-11-12 22:36:16 · 285 阅读 · 0 评论 -
C/C++细节(指针相关)
1、a和&a的区别: //a是数组名,代表数组的首地址, a+1是一个元素地址 //&a是数组的指针,&a+1此时该指针已经越界了 #include int main(void) { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d, %d",*(a+5),*(ptr)); re转载 2012-11-10 19:35:33 · 389 阅读 · 0 评论 -
C复习笔记(多维数组与指针)
二维数组名代表首行首地址,它是一个指针常量 a【0】为一位数组名,它同样也是一个指针常量,对其进行sizeof操作得到一维数组所占空间的大小 对指针变量进行sizeof操作得到的值是一样的,无论指针变量是行指针还是列指针 然而对指针常量进行sizeof操作得到的值却是不一样的,它是其所代表的数组的整体存储空间大小 在二位数组中,并不存在a【i】这样一个实际变量,它只是一种地址的计算方法原创 2012-05-01 09:48:37 · 213 阅读 · 0 评论 -
指针
1、C语言适合编写系统软件的关键原因在于它支持指针的概念(而指针能够支持对内存的直接操作) 2、编译阶段确定变量名和地址的对应关系(变量名包含地址信息和类型信息) 3、直接访问:按变量名地址存取变量值的方式;间接访问:使用指针 4、指针是地址,而指针变量时存放地址的地方 5、TC下指针变量的长度为两个字节 6、指针变量只能存放地址,不要将一个整数赋给一个指针变量 7、(*pa)++等价原创 2012-04-25 11:58:22 · 227 阅读 · 0 评论 -
宏定义
1、#error的作用:测试宏是否存在 编译程序时,只要遇到 #error 就会跳出一个编译错误,既然是编译错误,要它干嘛呢?其目的就是保证程序是按照你所设想的那样进行编译的。 下面举个例子: 程序中往往有很多的预处理指令 #ifdef XXX ... #else #endif 当程序比较大时,往往有些宏定义是在外部指定的(如makefile),或是在系统头文件中指定的,当你不转载 2012-11-07 21:05:32 · 263 阅读 · 0 评论 -
整型数据
1、数据在内存中以二进制形式存放,不同编译系统为变量分配的字节数不同 2、数值以二进制补码的形式进行存放 3、C语言整型变量空间分配原则:(通常int为一个机器字长) sizeof(long)>=sizeof(int)>=sizeof(short) 4、特殊的整型常量: (1)-12345u(或者-12345U):将-12345转换为对应的补码形式,,然后按照无符号数形式存储 (2)1原创 2012-10-18 10:07:09 · 311 阅读 · 0 评论 -
基本类型
1、常量在其作用域内不能被改变,也不能被赋值(它和变量存储在不同的存储段中) 2、常量:整型常量、实型常量、字符型常量、符号常量(#define PRICE 100) 3、变量名是一个地址 4、C语言变量名由:字母或者下划线开头,其余位置可以用字母、下划线、数字原创 2012-10-18 09:47:41 · 231 阅读 · 0 评论 -
编译预处理
1、预处理命令不是语言本身的组成部分 2、宏展开不做正确性检查 3、宏定义不是语句,不以“;”结束 4、可以嵌套宏定义 5、宏定义不会占据内存空间 6、宏定义不作用于程序中双引号内的字符串 7、使用undef可以提前终止宏定义的作用域 1、文件包含可包含以下内容:符号常量定义、函数原型声明、结构体变量定义、全局变量定义、类型定义(typedef) 2、文件包含可以嵌套 3、原创 2012-09-24 16:33:00 · 389 阅读 · 0 评论 -
C语言变量作用域和生命周期
1、C语言不支持对形参变量的引用,也就是说,形参变量的作用域仅在于函数定义域内 2、有的C语言编译器支持对变量不在函数开始的时候定义 3、全局变量可以作为函数间通信的一个工具 4、全局变量可以通过减少函数形参数,较少内存空间,较少传递数据的时间消耗 5、动态变量的生命周期和其所在的汗水一样 6、静态变量的生命周期为整个程序的运行过程 7、静态变量在编译时赋初值,动态变量在函数调用时使用原创 2012-09-22 12:53:32 · 1460 阅读 · 0 评论 -
C语言运算符和结合性
先判别运算符的优先级,高优先级的运算符先进行运算; 假如相邻的运算符优先级相同,则采用结合性进行判别 1、结合性: 只有单目,二目中的赋值,三目运算符的结合性是自右向左 其他的都是自左向右 2、优先级: 第一优先级: 圆方括号点箭头 其他: 单算移关系 按位逻条赋原创 2012-09-20 21:24:38 · 558 阅读 · 0 评论 -
函数与指针
1、函数名即是函数的入口地址 2、对指向函数的指针做算术运算是没有意义的 3、设计指向函数的指针可以更好地实现结构化程序设计方法。编写对一类数据进行不同处理的函数,增加函数的灵活性,可以编写一个通用的函数来实现各种专用功能 void process(int,int,int(*fun)(int,int)); 1、一个C程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。原创 2012-10-08 15:51:36 · 258 阅读 · 0 评论 -
数组与函数参数传递
1、形参数组并不占据实际内存空间,它仅仅是一个指针 2、C语言自动将形参数组名作为指针变量处理 3、可以认为有一个形参数组,它从实参数组哪里得到起始地址,因此与实参数组共用一段内存空间 4、实参数组名是一个指针常量,而形参数组名是一个指针变量 5、指向数组的指针int (*p)[4];为指向一维数组的指针变量,“【4】”表示所指向一维数组的列数。原创 2012-10-08 15:06:06 · 266 阅读 · 0 评论 -
C复习笔记(字符数组)
一、字符数组的逐个处理: 1、由于字符型与整型是可以互相通用的,因此可以用整型数组来存放字符数据,不过很浪费空间(整型数组不能使用字符数组的特有初始化方式int a[]="I am happy"(error);同时不能使用字符数组特有的输出方式) 2、逐个初始化与整体初始化的不同 char a[]="AB";//此时数组的长度为3 char a[]={'A','B'};//此时数组的长度为原创 2012-04-20 13:40:23 · 363 阅读 · 0 评论 -
C复习笔记(字符数据)
输出字母字符、专用字符、图形字符、控制字符的通用方法: \加上一至三位的八进制数(\_ _ _) 或\加上一至两位的十六进制数(\x_ _) 将字符存于内存的实质是存放字符对应的ASCII码——字符型数据和整型数据可以通用 有些C语言编译系统将字符变量定义为signed char类型,如果不想按有符号处理,可在程序中定义unsigned char(这样可以扩大正整数的范围) 不要把字符串原创 2012-04-18 20:55:32 · 264 阅读 · 0 评论 -
C复习笔记(浮点型数据)
1、浮点型数据在内存中的存放: (1)小数部分的位数越多,数的有效数字越多,精度也就越高 (2)指数部分占的位数越多,能表示的数值范围越大 2、要避免将一个很大的数和一个很小的数直接相加或者相减 3、浮点常量的默认类型——双精度(可以在常量后加F或者f来指定单精度,提高运行速度) 4、从高精度浮点数到低精度浮点数的赋值操作会发生截取 5、如何输出浮点型数据的指数形式?(输出小数形式使用原创 2012-04-13 09:34:31 · 375 阅读 · 0 评论 -
C复习笔记(数组的使用)
C语言不允许对数组大小做动态定义 C语言规定只能逐个引用数组元素,不能一次引用整个数组(即将数组作为一个整体来使用) C语言中,数组的概念有点类似数学中的集合,数组的初始化可以使用集合形式进行初始化 在数组上实现循环队列可以很好地解决斐波那契数列问题 C编译器对数组访问越界没有警报,这样会增加程序员的负担 除了引用以外,数组元素的类型可以是任意的复合类型。没有所有元素都是引用的数组(这个原创 2012-04-18 21:05:10 · 347 阅读 · 0 评论