资源预览内容
第1页 / 共49页
第2页 / 共49页
第3页 / 共49页
第4页 / 共49页
第5页 / 共49页
第6页 / 共49页
第7页 / 共49页
第8页 / 共49页
第9页 / 共49页
第10页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C语言程序设计-理论方法与实践(第2版)C C语言程序设计语言程序设计第第7 7章章 指针程序设计指针程序设计 C语言程序设计-理论方法与实践(第2版)第7章 指针程序设计u7.1 指针概述 u7.2 指针变量的定义和使用u7.3 指针与数组 u7.4 指针作为函数的参数u7.5 指针函数u7.6 指针应用程序举例C语言程序设计-理论方法与实践(第2版)7.1 指针概述u指针与指针变量u变量的直接访问和间接访问C语言程序设计-理论方法与实践(第2版)7.1 指针概述l l指针与指针指针与指针变量变量 某个某个变量所占用的内存空间的开始地址称为该变量的地变量所占用的内存空间的开始地址称为该变量的地 址,址,C C语言将这一地址称为指针,存储这一地址的变量语言将这一地址称为指针,存储这一地址的变量 称为指针变量。称为指针变量。 通过指针变量可以实现对其他变量的访问。通过指针变量可以实现对其他变量的访问。 指针变量可以指向任何一种数据类型,如可以指指针变量可以指向任何一种数据类型,如可以指 向基本类型的变量,也可以指向数组等。向基本类型的变量,也可以指向数组等。C语言程序设计-理论方法与实践(第2版)7.1 指针概述l l变量直接访问变量直接访问是指通过变量名直接使用变量数据。是指通过变量名直接使用变量数据。 例如:例如: intint a=10,b=20,c; a=10,b=20,c; c=c=a+ba+b; ; printfprintf(“%d(“%dn“,cn“,c); );l l变量间接访问变量间接访问是指通过指针变量去访问其他变量数据。是指通过指针变量去访问其他变量数据。C语言程序设计-理论方法与实践(第2版)7.2 指针变量的定义和使用u7.2.1 指针变量程序示例 u7.2.2 定义指针变量u7.2.3 使用指针变量 C语言程序设计-理论方法与实践(第2版)7.2.1 指针变量程序示例例例7-17-1 使用指针变量输出数据程序。 #include int main(void) int a=2008;intint *p; *p; p= p= printf(“%dn“, *p*p); return 0; 定义指针变量p指向a用*p表示变量a的值 C语言程序设计-理论方法与实践(第2版)7.2.2 定义指针变量l一般格式数据类型数据类型 *指针变量名1,*指针变量名2,; 例如:intint * *p1,* *p2;floatfloat * *q; 指针变量允许和其他变量同时定义:charchar m,n,* *p,*,*q;l注意 “ “数据类型数据类型” ”是指针变量要指向的变量的数据类型是指针变量要指向的变量的数据类型。C语言程序设计-理论方法与实践(第2版)7.2.3 使用指针变量1指针变量的初始化l 一般格式数据类型 *指针变量名1=地址1,*指针变量名2=地址2,; 例如:int m;int *p=p=scanf(“%d“,p p); scanf语句的功能与下列语句等价:scanf(“%d“, C语言程序设计-理论方法与实践(第2版)7.2.3 使用指针变量4 4指向运算指向运算“ “* *” ”与目标访问与目标访问 对于指针变量p,访问其指向的变量时,使用“*”运算 符:*p 例如,对上面的程序段,输出变量score的数据:printf(“%d“,*p*p); 其中,*p表示p指向的目标score 。例例7-27-2定义指针变量p1、p2,并任意输入两个整数a、b,使 得p1指向其中的较大值,p2指向其中的较小值 。#include int main() int *p1,*p2,*p,a,b; printf(“Input: “); scanf(“%d,%d“, p1= p2= if(a #define N 10 int main() int aN;int *p=a,i;for(i=0;i #define N 10 int main() int aN;int *p=a,i;for(i=0;i #define N 10 int main(void) int aN,*p;for(p=a;p #define N 10 int main(void) int aN,i,max,*p;,*p; p=a; printf(“Data: “); for(i=0;i intint main(void) main(void) intint a34=3,17,8,11,66,7,8,19,12,88,7,16; a34=3,17,8,11,66,7,8,19,12,88,7,16; intint * *p,maxp,max; ; for(p=a0,max=*for(p=a0,max=*p;pp;pmax)if(*pmax) max=*p;max=*p; printfprintf(“Max=%d(“Max=%dn“,maxn“,max); );return 0; return 0; C语言程序设计-理论方法与实践(第2版)7.3.3 指针与字符串l l使字符型指针变量指向字符串的方法使字符型指针变量指向字符串的方法 定义指针变量时初始化指向字符串。定义指针变量时初始化指向字符串。char *p=“a string“;char *p=“a string“; 使指针变量指向字符型数组,从而使其指向字符串。 char name20, *str; gets(name); str=name;C语言程序设计-理论方法与实践(第2版)7.3.3 指针与字符串例例7-67-6从键盘输入一个字符串,统计其中的数字字符个数。从键盘输入一个字符串,统计其中的数字字符个数。 #include #define N 100#define N 100 intint main(void) main(void) char char strstrN,*p; N,*p; intint count; count; p= p=strstr; ; gets( gets(p p); ); for(count=0 for(count=0;*p!=0;p+);*p!=0;p+)if if(*p=0 char *days7*days7=“Sunday“,“Monday“,“Tuesday“, “Wednesday“, “Thursday“,“Friday“,“Saturday“; for(i=0;i intint main() main() void swap( void swap(intint *, *,intint *); *);intint x,yx,y; ;scanfscanf(“%(“%d,%d“, );if(x#include int main()int main() void swap(int *,int *); void swap(int *,int *); int i,a10=33,-12,97,3,7,18,9,51,10,9;int i,a10=33,-12,97,3,7,18,9,51,10,9; for(i=0;iai+1)if(aiai+1) swap(swap( for(i=0;imax)max=*(p+i); return max; #include #define N 10 int main(void) int pv_max(int *,int); int aN,i; for(i=0;i #define N 100 int main(void) char stringN;int count_p(char *); gets(string); printf(“Total: %dn“,count_pcount_p(string(string);return 0; intint count_pcount_p(char *p) (char *p) int count;for(count=0;*p!=0;p+) if(*p=0void string_out(char *,int);char *days7*days7=“Sunday“,“Monday“, “Tuesday“, “Wednesday“, Thursday“, Friday“,“Saturday“;string_sort(daysdays,7);string_out(daysdays,7);return 0; void string_out(char * string ,int n) int i;for(i=0;i)0)temp= string j;string j= string j+1;string j+1=temp; 例例7-13 7-13 编写能对多个字符串排 序的函数,并调用该函数将一 组字符串按字典顺序排序。C C语言程序设计语言程序设计- -理论方法与实践(第理论方法与实践(第2 2版)版)7.5 指针函数函数返回值是指针类型的函数称为函数返回值是指针类型的函数称为指针函数指针函数n指针函数的定义的一般格式数据类型数据类型 * *函数名函数名( (形参表形参表) ) 函数体函数体 u 函数体中的return命令须返回一个地址值C C语言程序设计语言程序设计- -理论方法与实践(第理论方法与实践(第2 2版)版)7.5 指针函数例例7-14 7-14 编写能够查找长度最大的字符串的函数,并调用该函数求一组字符串中的最长字符串。l 问题分析与算法设计 设计查找最长字符串的函数max_len(),其原型如下: char *char *max_lenmax_len (char *string, (char *string,intint n) n) 其中,string为指向字符串的指针数组,n为字符串个 数。 函数功能:在string指向的n个字符串中查找最长字符串 ,返回该字符串的地址。 设计主函数,其功能包括:通过指针数组提供一组字 符串;调用函数max_len()求得最长字符串,并输出结 果。C C语言程序设计语言程序设计- -理论方法与实践(第理论方法与实践(第2 2版)版)7.5 指针函数#include #include int main() char *char *max_lenmax_len(char *,(char *,intint); ); char *p_string4=“Sydney2000“,“Beijing2008“,“Athens1996“,“Korea1992“;puts(max_lenmax_len(p_string,4(p_string,4); return 0; char *char *max_lenmax_len(char *string,(char *string,intint n) n) int i,posion,max_l;posion=0; max_l=strlen(string0); for(i=1;imax_l) max_l=strlen(stringi); posion=i; return(string return(stringposi
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号