C语言程序设计(谭浩强) 复习笔记

1.指针:用指向函数的指针作函数参数、指针的数据类型和指针运输小结

int i; 定义整型变量 i
int *p p 为指向整型数据的指针变量
int a[n]; 定义整型数组 a,它有n个元素
int *p[n]; 定义指针数组 p,它由n个指向整型数据的指针元素组成
int (*p)[n]; p 为指向含n个元素的一维数组的指针变量
int f(); f 为带回整型函数值的函数
int *p(); p 为带回一个指针的函数,该指针指向整型数据
int (*p)(); p 为指向函数的指针,该函数返回一个整型值
int **p; P是一个指针变量,它指向一个指向整型数据的指针变量

++++++++++++

1) 指针变量加(减)一个整数:
例如:p++、p--、p+i、p-i、p+=i、p-=i
一个指针变量加(减)一个整数并不是简单地将原值加(减)一个整数,

而是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数加(减)。

++++

2) 指针变量赋值:将一个变量的地址赋给一个指针变量。
p=&a; (将变量a的地址赋给 p)
p=array; (将数组 array的首地址赋给 p)
p=&array[i]; (将数组 array第 i 个元素的地址赋给 p)
p=max; (max 为已定义的函数,将 max 的入口地址赋给 p)
p1=p2; (p1 和p2都是指针变量,将 p2 的值赋给p1)
注意:不能如下:
p=1000;

++++

3) 指针变量可以有空值,即该指针变量不指向任何变量:
p=NULL;
4) 两个指针变量可以相减:如果两个指针变量指向同一个数组的元素,则两个指针变量值之差是两个指针之间的元素个数。

5) 两个指针变量比较:如果两个指针变量指向同一个数组的元素,则两个指针变量可以进行比较。

指向前面的元素的指针变量“小于” 指向后面的元素的指针变量。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

2.预处理、带参数宏定义

3.变量的存储类别:auto、static、register、extern、存储类别小结;内部函数、外部函数

static int a ;//静态内部、静态外部变量

auto char c;//自动变量,在函数中定义

register int d;//寄存器变量,在函数内定义

extern b ; //声明b是一个已被定义的外部变量

4.结构体、共用体、枚举类型:用结构体变量和指向结构体的指针作函数参数、用typedef定义类型

【例 11.7】计算一组学生的平均成绩和不及格人数。用结构
指针变量作函数参数编程。
struct stu
{
int num;
char *name;
char sex;
float score;}boy[5]={ {101,"Li ping",'M',45},
{102,"Zhang ping",'M',62.5},
{103,"He fang",'F',92.5},
{104,"Cheng ling",'F',87},
{105,"Wang ming",'M',58},
};
main()
{
struct stu *ps;//定义指向结构体的指针
void ave(struct stu *ps);//用结构体指针作为函数参数按地址传入
ps=boy;
ave(ps);
}
void ave(struct stu *ps)
{
int c=0,i;
float ave,s=0;
for(i=0;i<5;i++,ps++)
{
s+=ps->score;
if(ps->score<60) c+=1;
}
printf("s=%f\n",s);
ave=s/5;
printf("average=%f\ncount=%d\n",ave,c);
}

5.位运算、位段(位域)

struct 位域结构名
{ 位域列表 };
其中位域列表的形式为:
类型说明符 位域名:位域长度

struct bs
{
int a:8;
int b:2;
int c:6;
};

。位运算符只有逻辑运算和移位运算两类。

位运算符可以与赋值符一起组成复合赋值符。如
&=,|=,^=,>>=,<<=等。

。位域在本质上也是结构类型,不过它的成员按二进制位
分配内存。其定义、说明及使用的方式都与结构相同。

6.文件类型指针

7.c标准库函数列表

posted @ 2011-07-26 12:14  lalalalalalalalala  阅读(910)  评论(0编辑  收藏  举报