c语言程序设计 第08章善于使用指针0
例7.12 分别求出1~5的阶乘值,并输出。(p196) #include int fac(int n) { static int f=1 ; /*f为静态局部变量*/ f=f*n; return(f); } void main() { int i; for(i=1;i<=5;i++) printf(“%d!=%d\n”,i,fac(i)); } 注: 静态局部变量“f”的有效范围只限于函数fac,但是生 存期是整个程序,即在fac函数外,它的值仍然存在。再次调用函数时,继续在前一个值上累乘。 若静态局部变量在定义时未初始化,系统自动赋值为0。 3 registc—寄存器变量 一般变量都存储在内存中,而寄存器变量存储在CPU的寄存器中,从而提高存取速度。 现代的计算机,系统可以自动完成此功能。 extern—外部变量的作用域 扩展外部变量的作用域。 习 题 P208: 1、2、3、4、6、7、8、10 [Return] [Return] [Return] [Return] [Return] [Return] [Return] [Return] [Return] [Return] [Return] [Return] 第8章 善于使用指针 8.1 什么是指针 8.2 指针变量 8.3 通过指针引用数组 8.4 通过指针引用字符串 8.1 什么是指针 1 指针是C语言的精华(灵魂) 掌握指针的应用,可以使程序简洁、紧凑、高效。 指针是内存单元的地址 (1) 定义变量——分配存储单元。 (2) 存储单元——包含若干字节。 (3) 每个字节都有一个编号,即地址。 (4) 单元的地址是首字节的地址,即变量的地址。 (5) 地址形象化地成为“指针”,指针即地址。 (6) 变量的地址即变量的指针,指针指向该变量单元。 (7) 将变量的地址存放到一个变量中,此变量称指针变量。 8.2 指针变量 8.2.1 指针变量的定义、初始化和引用 1 定义:int a,b,*p,*q; char ch,*r; 一般式:基类型 *指针变量名; 2 定义指针变量时,可同时初始化: int a,b,*p=&a,*q=&b; char ch,*r=&ch; 3 引用指针变量—3种情况 (1) 给指针变量赋值: 例如:int a,b,*p,*q; p=&a;q=&b; 注:指针变量只能存放地址,并且必须是与指针基类型相同 类型的变量的地址,不能将一个整数赋给指针变量。 (2) 通过指针变量引用指针变量所指的变量 例如: int a ,b,*p,*q; p=&a ;q =&b; *p=20;*q=*p+10; printf (“%d ,%d \n”,*p,*q); printf (“%d ,%d \n ”, a , b); 注意:两个运算符“&”和“*”: &:取地址运算符,&a是变量a的地址。 *:指针运算符,*p是指针p所指的变量。 (3) 引用指针变量的值(即地址值) printf(“%o ,%o \n ”,p , q); 以八进制的数的形式输出指针变量p、q的值。 例8.2 (p214) 输入a,b两个整数,按先大后小顺序输出。 设计算法:使用指针,不交换两个整型变量的值,而是 交换指针变量的值。 编程序: #include void main( )