@caelumtian
        
        2017-08-21T05:24:57.000000Z
        字数 3320
        阅读 1045
    胡杨考研试题附录:1)附录 1附录 2 附录 3附录 4“(a>b)?a:b”是一个条件表达式,如果(a>b)条件为真,则条件表达式去值a,否则取值b。一般形式:表达式1?表达式2:表达式3,它是C语言中唯一的一个三目运算符。执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值作为整个条件表达式的值。若表达式1的值为0,则求解表达式33,表达式3的值作为整个条件表达式的值.
C语言的三种基本数据类型为整型,实型,字符型。
- 整型,包括short, int, long等,用以表示一个整数,默认为有符号型,配合unsigned关键字,可以表示为无符号型。
 - 实型,即浮点型,包括float, double等,用来表示实数,相对于整型,该类型可以表示带有小数部分的数值。需要注意的是,实型在计算机语言中为近似值表示,并非准确值,在多次计算后可能会出现真值偏差。
 - 字符型,即char型,用来表示各种字符,与ascii码表一一对应。除可以用来表示各类字符外,char型的其它规则与整型相同,可以认为char是一种特殊的整型。
 
a < c || b < c
#define CHANGE(a,b,t) t=a;a=b;b=a
3
- 它是一种构造数据类型。枚举类型用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
 - enum
 
i+=1 标准答案
i ^ 1 列害了我的姐答案(位运算)
- static变量存放在静态存储区,在程序整个运行期间都不释放;而auto变量存放在动态存储区,随着生命周期的结束而立即释放。
 - static变量只赋值一次,以后就不用赋值;而auto变量在函数每调用一次都要赋初值。
 - 如果用户不对static变量赋初值,则默认为0或'\0';而auto变量为不确定值。
 
3
18 12 10
==
10100
arr[2][3]所在的地址
2 4 6 8 10
strcpy
7行: if(p >= 'A' && p <= 'Z')
9 行: while(*(++p) != '\0')
4行:int tmp = *x;
6行:*y = tmp;
#include <stdio.h>int main(void) {int t = 1;int i = 1;int s = 0;for(;i <= 20; i++) {t = t * i;s = s + t;}printf("%d", s);return 0;}
#include<stdio.h>//递归算法 a 是数组指针,key是查找的int binary(int *a, int key, int low, int high) {int mid;if(low > high)return -1;mid = (low + high) / 2;if(a[mid] == key)return mid;else if(a[mid] > key)return recurbinary(a,key,low,mid -1);elsereturn recurbinary(a,key,mid + 1,high);}//调用示例如下:int a[] = {1,2,3,4,5,6,7,8,9,12,13,45,67,89,99,101,111,123,134,565,677};binary(a, 89, 0, sizeof(a) / sizeof(a[0])-1));
非递归方法,见附录5
若函数调用时用数组名作为函数参数,以下叙述中,正确的是__C__。 
A) 实参与其对应的形参共占用同一段存储空间 
B) 实参将其地址传递给形参,结果等同于实现了参数之间的双向值传递? 
C) 实参与其对应的形参分别占用不同的存储空间 
D) 在调用函数中必须说明数组的大小,但在被调函数中可以使用不定    
数组名作为函数的实参,实际传递的是数组的首地址。形参有两种写法:数组做形参或者指针做形参。无论数组或指针做形参,其实都是一个指针做形参,指向了函数以外的存储空间。在32位操作系统中,指针变量占4个字节,有自己的存储空间。数组实参也有自己的存储空间,所以答案C是正确的。
static 是定义一个静态变量 
静态变量的存储空间在程序的整个运行期间是固定的,它不像动态变量是在程序执行当中被动态建立,动态撤销的. 
如果一个变量被指定为静态,在编译时就为它分配好存储空间,程序一开始执行便被建立,直到该程序执行结束都是存在的。它不像动态变量仅存在于函数或程序被调用期间. 
静态变量可分为静态局部变量和静态外部变量两种 
作用 
1.可以为变量初始化(在变量被编译的时候就赋值) 
2.在函数多次调用的过程序中,静态局部变量的值具有可继承性  
共用体类型数据的特点: 
1. 同一个内存段可以用来存放几种不同类型的成员,但是在每一瞬间只能存放其中的一种,而不是同时存放几种。换句话说,每一瞬间只有一个成员起作用,其他的成员不起作用,即不是同时都在存在和起作用。 
2. 共用体变量中起作用的成员是最后一次存放的成员,在存入一个新成员后,原有成员就失去作用。 
3. 共用体变量的地址和它的各成员的地址都是同一地址。 
4. 不能对共用体变量名赋值,也不能企图引用变量名来得到一个值。 
5. 共用体类型可以出现在结构体类型的定义中,也可以定义共用体数组。反之,结构体也可以出现在共用体类型的定义中,数组也可以作为共用体的成员。  
宏常考的知识点如下: 
1. 宏分为带参数和不带参数两种定义方式  
2. 宏定义末尾不加分号 
3. 宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头 
4. 宏定义允许嵌套 
5. 函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存 
6. 宏定义不存在类型问题,它的参数也是无类型的 
7. 宏替换只作替换,不做计算,不做表达式求解 
8. 宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值) 
9. 宏展开使源程序变长,函数调用不会  
int binary( int *a, int key, int n ) {int left = 0, right = n - 1, mid = 0;mid = ( left + right ) / 2;while( left < right && a[mid] != key ) {if( a[mid] < key ) {left = mid + 1;} else if( a[mid] > key ) {right = mid - 1;}mid = ( left + right ) / 2;}if( a[mid] == key )return mid;return -1;}//调用示例binary( a, b[i], sizeof(a)/sizeof(a[0]))