C语言程序设计(谭浩强) 复习笔记
2011-07-26 12:14
162 查看
1.指针:用指向函数的指针作函数参数、指针的数据类型和指针运输小结
int i; 定义整型变量 i
int *p p 为指向整型数据的指针变量
int a
; 定义整型数组 a,它有n个元素
int *p
; 定义指针数组 p,它由n个指向整型数据的指针元素组成
int (*p)
; 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标准库函数列表
int i; 定义整型变量 i
int *p p 为指向整型数据的指针变量
int a
; 定义整型数组 a,它有n个元素
int *p
; 定义指针数组 p,它由n个指向整型数据的指针元素组成
int (*p)
; 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标准库函数列表
相关文章推荐
- c语言程序设计(第二版)谭浩强 自我总结笔记
- c语言程序设计(第二版)谭浩强 自我总结笔记2
- ORACLE复习笔记之日期时间函数大全
- JSP基础复习学习笔记
- 操作系统复习笔记(二)
- HDPCD-Java-复习笔记(14)- lab
- Java复习笔记-第四部分
- 数据结构与算法复习笔记
- C语言复习笔记三:三种程序结构记习题总结(1)
- UML建模复习笔记(一UML概述)
- 数据结构复习笔记(4)
- IOS开发复习笔记(1)-OC基础知识
- JAVA学习笔记(复习)-----2、 JAVA基础(一)
- 《软件工程——实践者的研究方法》重难点复习笔记(第十章——基于类的需求建模方法)
- javascript 复习笔记----注意事项总结
- PMP复习笔记1:各种分解结构及相关知识点
- 复习笔记 2
- Java SE复习笔记62
- 【黑马程序员】多态、抽象类、接口——Java复习笔记
- 复习2(笔记17开始)