《C语言程序设计》第5章指针课件_第1页
《C语言程序设计》第5章指针课件_第2页
《C语言程序设计》第5章指针课件_第3页
《C语言程序设计》第5章指针课件_第4页
《C语言程序设计》第5章指针课件_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计第5章指针第五章第五章 指指 针针PointerPointerC语言程序设计第5章指针5.1 指针的基本概念指针的基本概念 指针指针是是C语言的重要特征,是语言的重要特征,是C语言访问内存数据和程序的灵活语言访问内存数据和程序的灵活和有效的手段。和有效的手段。 C C语言的指针支持:语言的指针支持: 函数的地址调用;函数的地址调用; 动态分配内存;动态分配内存; 数组的地址引用。数组的地址引用。C语言程序设计第5章指针内存、地址、指针内存、地址、指针 (Memory ,Address, Pointer) 内存内存存放了计算机正在运行的程序和程序正在使用的数据。内存放了计算机正在运

2、行的程序和程序正在使用的数据。内存的基本单元是字节存的基本单元是字节(Byte)。 为了访问内存单元,为了访问内存单元,CPU给每个内存单元一个编号,该编号称给每个内存单元一个编号,该编号称为该内存单元的为该内存单元的地址地址。 变量变量是程序中可以改变的量,当说是程序中可以改变的量,当说明变量时,系统将为其在内存中开辟相明变量时,系统将为其在内存中开辟相应得内存单元。由此确定变量的应得内存单元。由此确定变量的地址地址及及内存中的表示方式。内存中的表示方式。2000H2001H2002H2003Hint a=0;a的的内内存存单单元元a的地址的地址&a 如果有一变量如果有一变量p,其内

3、容存放了其内容存放了a的的地址地址&a,通过,通过p也可实现对也可实现对a的访问,的访问,p称为指针,并指向称为指针,并指向a。00H20H00pC语言程序设计第5章指针指针的说明指针的说明 指针是特殊类型的变量,其内容是变量的地址。指针是特殊类型的变量,其内容是变量的地址。在使用前必须在使用前必须说明,说明某标识符是指针类型,并可指向某种类型的对象。说明,说明某标识符是指针类型,并可指向某种类型的对象。指针的说明格式:指针的说明格式: type *pname1,*pnamen;标识符命名的指针变量名。标识符命名的指针变量名。指针标志。指针标志。指针指向对象的类型。指针指向对象的类型。

4、int *p, *q; /* p、q是指向整型变量的指针。是指向整型变量的指针。*/float *pfValue ,*pf; /* pfValue和和pf是指向浮点型的指针。是指向浮点型的指针。*/C语言程序设计第5章指针指针对变量的引用指针对变量的引用 定义指针的目的是通过指针引用内存对象,指针的引用应按如定义指针的目的是通过指针引用内存对象,指针的引用应按如下步骤进行:下步骤进行:说明指针说明指针 int a=0, *p;指针指向对象指针指向对象p=&a;通过指针引用对象通过指针引用对象*p=*p+2;4.指针操作的两种运算符:指针操作的两种运算符:取地址运算取地址运算 &

5、 &a表示取变量表示取变量a地址的运算。地址的运算。间接运算间接运算 * *p表示取指针表示取指针p指向变量内容的运算。指向变量内容的运算。int a,*p; 2000Happ=&a; /* p指向指向a。 */2000H*p=2;2C语言程序设计第5章指针举例:举例:#include void main (void ) int x ,*p; x=55; p=&x; printf ( “ %d, %u ”, x, *p) ; *p=65; printf ( “ %d, %u”, x, *p) ;2000Hxp2000H5565关于指针的说明:关于指针的说明:指针必须指向

6、对象后,才能引用。指针必须指向对象后,才能引用。 int *p; *p=2; /* Error! */ &和和 * 为互补运算。为互补运算。int a,*p; p=&a;则:则:&*p p *&a aC语言程序设计第5章指针【例【例5-1】 /* example 5-1 指针访问简单变量示例指针访问简单变量示例 */ #include void main( void ) int a,b,*p1,*p2; p1 = &a; /* p1指向指向a */ p2 = &b; /* p2指向指向b */ scanf(%d%d, p1,&b); pr

7、intf(a+b=%dn, *p1+*p2); C语言程序设计第5章指针5。指针的运算指针的运算 指针是指针是特殊类型特殊类型的变量,其内容是的变量,其内容是变量的地址,变量的地址,因此因此指针的运指针的运算及结果一定要符合地址逻辑。算及结果一定要符合地址逻辑。五种算术运算五种算术运算int a, b, *p1, *p2;p1=&a;p2=&b;a2000Hb2400Hp1p22000H2400Hp1+; /*含义指向含义指向a后的整型单元后的整型单元*/2002H2002Hp1- -; /*指向指向a前的整型单元前的整型单元*/p1+n; /*指向指向a后的第后的第n个整型单

8、元个整型单元*/p1- n; /*指向指向a前的第前的第n个整型单元个整型单元*/p2- p1; /*a和和b之间差的单元数之间差的单元数*/结果结果200Hp n 相当于相当于: p的实际内容的实际内容 n sizeof(*p);六种关系运算六种关系运算比较两个同类型变量之间的地址关系。比较两个同类型变量之间的地址关系。p1p2;C语言程序设计第5章指针指针赋值运算#include void main(void) int a,b,*p1,*p2; a=2; b=3; p1=&a; p2=&b; *p1=*p2; printf(“%d,%dn”,a,b); a=3; b=5;

9、p1=p2; printf(“%d,%d”,*p1,*p2);差别差别a&a 2000Hb&b 2400Hp1p2232000H2400HC语言程序设计第5章指针5.2 指针与数值型数组指针与数值型数组 数组是同类型的变量的集合,各元素按下标的特定顺序占据一数组是同类型的变量的集合,各元素按下标的特定顺序占据一段连续的内存,段连续的内存,各元素的地址也连续,各元素的地址也连续,指针对数组元素非常方便。指针对数组元素非常方便。指针与一维数组指针与一维数组通过指针引用数组元素可以分以下三个步骤:通过指针引用数组元素可以分以下三个步骤:说明指针和数组说明指针和数组int *p,a10

10、;指针指向数组指针指向数组p=a; /*指向数组的首地址指向数组的首地址*/p=&a0; /*指向数组的首地址指向数组的首地址*/通过指针引用数组元素通过指针引用数组元素当指针指向数组的首地址时,则下标为当指针指向数组的首地址时,则下标为i的元素地址为:的元素地址为: p+i 或或a+i引用数组元素可以有三种方法:引用数组元素可以有三种方法:下标法:下标法: a i 指针法:指针法: *(p+i)数组名法:数组名法:*(a+i)注意:数组名是地址常量,不能改变!注意:数组名是地址常量,不能改变! a=p; /*Error!*/C语言程序设计第5章指针 /* example 5-2 通过

11、指针访问数组元素通过指针访问数组元素 */ #include void main(void) double dArray10,dAvge,*dPointer; int i; dAvge = 0; dPointer = dArray; /* 指针指向数组指针指向数组 */ for(i=0; i10; i+) scanf(%lf,dPointer + i); /*dPointer+i为下标为为下标为i的元素地的元素地址址*/ dAvge += *(dPointer + i); /* 累加各个元素的值累加各个元素的值 */ dAvge /= 10; printf(The avgerage of ar

12、ray is: %lfn,dAvge); 【例【例5-2】有一个具有】有一个具有10个元素的双精度数组,通过指针求其所个元素的双精度数组,通过指针求其所有元素的平均值。有元素的平均值。C语言程序设计第5章指针/* example 5-3 通过指针求数组元素最大值及其位置通过指针求数组元素最大值及其位置*/#include void main(void) int iArray10,*ipCur; /* ipCur遍历访问数组的指针遍历访问数组的指针 */ int *ipPos; /* ipPos最大元素地址最大元素地址*/ int i; ipCur = iArray; /*指针指向数组指针指向数

13、组*/ for(i=0; i10; i+) scanf(%d, ipCur+); /* ipCur为下标为为下标为i的数组元素的地址的数组元素的地址 */ ipPos = iArray; /* 指向数组首地址指向数组首地址 */ /* 设下标为设下标为0的元素为最大值的元素为最大值 */ ipCur = iArray + 1; 【例【例5-3】通过指针求数组的最大值及其位置。】通过指针求数组的最大值及其位置。C语言程序设计第5章指针 for(i=1; i *ipPos) ipPos = ipCur; /* ipPos保存最大元素的地址保存最大元素的地址*/ ipCur+; /*指向下一元素指向

14、下一元素*/ printf(The max is %dn,*ipPos); printf(The position is %dn,ipPos-iArray);C语言程序设计第5章指针举例:打印数组中的奇数。举例:打印数组中的奇数。#include void main(void ) int i ,a 10 ; for (i=0 ; i10 ; i+ ) scanf ( “ %d” , &ai ) ; for (i=0 ; i10 ; i+) if ( a i % 2 ) printf ( “ %d”, a i ); 数组元素法。数组元素法。循环输入。循环输入。循环判断,满足条件输出。循环

15、判断,满足条件输出。数组名法。数组名法。 a+i *(a+i)指针法。指针法。 ,*p ;p = a;p+*(p+i)结果是否结果是否正确?正确?p= a; *p=&a0;*注意指针在运算时的变化。注意指针在运算时的变化。C语言程序设计第5章指针2.指针与二维数组指针与二维数组如下说明数组如下说明数组int a34=1,2,3,4,5,6,7,8,9,10,11,12;其二维结构如下:其二维结构如下:12345 6789101112行行列列为了便于索引,为了便于索引,C语言将数组分为两级管理。语言将数组分为两级管理。a0a1a2 将将a理解为一维数组,理解为一维数组, 数组有三个元素,

16、它们分别为数组有三个元素,它们分别为a0、a1,a2 。各个元素又是一个有四个元素的一维数组。各个元素又是一个有四个元素的一维数组。从地址的角度看:从地址的角度看:a 为为a0 第一行的首地址第一行的首地址a+1 为为a1 第二行的首地址第二行的首地址a+2 为为a2 第三行的首地址第三行的首地址a+1 地址一次加一行。地址一次加一行。i行行j列数组元素的地址可以由列数组元素的地址可以由a i +j得到。得到。C语言程序设计第5章指针数组名地址的两级管理数组名地址的两级管理aa0a1a2a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23等价地址及其管理方

17、式等价地址及其管理方式数组名是数组的地址,而且是常量,数组名是数组的地址,而且是常量,* 运算不改变其值!运算不改变其值!以下三种地址等价:以下三种地址等价:a+i*(a+i)a i 加法按行递增加法按行递增加法按列递增加法按列递增(a+1)+1*(a+1)+1差别?差别?C语言程序设计第5章指针 数组名表示数组元素数组名表示数组元素a i j (*(a+i) j *(*(a+i)+j)*(a i +j)指针与二维数组指针与二维数组int *p, a34;p=a;aij*(p+4*i+j)等价!等价!a00aa01a02a0a10a11a12a1a20a21a22a2a+1a1+2C语言程序设

18、计第5章指针 /* example 5-4 求二维数组最小值及其位置求二维数组最小值及其位置 */ #include void main(void) int a34,i,j; int iMinRow,iMinCol; /*iMinRow最小值的行,最小值的行,iMinCol最小值的列最小值的列 */ for(i=0; i3; i+) for(j=0; j4; j+) scanf(%d,ai + j); /* ai+j为为i行行j列元素的地址列元素的地址 */ iMinRow = 0; iMinCol = 0; /*假定假定a00为最小值为最小值*/ for(i=0; i3; i+) for(j

19、=0; j4; j+) if(*(*(a + i) + j) aiMinRowiMinCol) iMinRow = i;iMinCol = j; /* 修正修正i和和j为新的最小值下标为新的最小值下标 */ printf(The min is a%d%d=%dn, iMinRow,iMinCol,aiMinRowiMinCol); 【例【例5-4】输入三行四列的整型数组,求最小值及其位置。】输入三行四列的整型数组,求最小值及其位置。C语言程序设计第5章指针 /* example 5-5 通过指针求二维数组元素的累加和通过指针求二维数组元素的累加和 */ #include void main(v

20、oid) int i,j,a23,sum; int *p; p = (int *)a;/*p指向数组指向数组a,由于,由于a加加1加加1行,转换为整型指针行,转换为整型指针*/ for(i=0; i2; i+) for(j=0; j3; j+) scanf(“%d”,ai + j); /* ai + j为为i行行j列元素的地址列元素的地址*/ sum = 0; for(i=0; i2; i+)for(j=0; j3; j+) sum += *(p + i*3 +j); /* 通过指针通过指针p表示表示aij */ printf(The sum of a = %dn,sum); 【例【例5-5】

21、输入两行三列的整型数组,通过指针求所有元素的累加和。】输入两行三列的整型数组,通过指针求所有元素的累加和。C语言程序设计第5章指针举例:举例: 在数组在数组a中查找输入的数,输出行列位置。中查找输入的数,输出行列位置。#include void main (void ) int a34=1,2,3,4,5,6,7,8,9,10,11,12; int i, j,iS; int *p; p=a; scanf (“ %d” , &iS) ; for(i=0;i3;i+)for(j=0;j4;j+) if(iS= a i j ) printf(“iS equal to a%d %d n”,i

22、, j); 下标法。下标法。*(a i +j)*(*(a+i)+j)*(p+4*i+j)C语言程序设计第5章指针【例【例5-6】输入】输入3行行4列的浮点型数组,通过指针求数组的平均值。列的浮点型数组,通过指针求数组的平均值。/* example 5-6 通过指针求二维数组的平均值通过指针求二维数组的平均值 */#include void main(void) int i,j; float a34,fAvg; float (*p)4; p = a; /*指针指向数组指针指向数组*/ fAvg = 0; for(i=0; i3; i+) for(j=0; j4; j+) scanf(“%f”,p

23、i+j); /* pi + j为为i行行j列元素的地址列元素的地址*/ fAvg += pij; /* pij表示表示aij*/ fAvg /=12; printf(The average of a = %fn,fAvg);C语言程序设计第5章指针5.3 指针与字符串(字符数组)指针与字符串(字符数组)字符串在内存中可以存储为两种形式:字符串在内存中可以存储为两种形式:字符数组字符数组字符串常量字符串常量 可以使指针指向字符数组或字符串常量,通过指针引用字符数可以使指针指向字符数组或字符串常量,通过指针引用字符数组或字符串的各个字符。组或字符串的各个字符。1.指针与字符数组:指针与字符数组:c

24、har *chp,str =”Hello!”; /*说明字符指针和字符数组说明字符指针和字符数组*/chp=str; /*指针指向字符数组指针指向字符数组*/putchar( *(chp+2); /*通过指针引用数组元素通过指针引用数组元素*/C语言程序设计第5章指针2.指针与字符串:指针与字符串:char *strp; /*说明字符指针说明字符指针*/strp=“Hello!”; /*指针指向字符串指针指向字符串*/puts(strp); /*通过指针引用字符串通过指针引用字符串*/说明指针时,可以同时赋初值,如:说明指针时,可以同时赋初值,如:char *strp=“Hello!”;赋值表

25、示将字符串的地址赋给指针!赋值表示将字符串的地址赋给指针!C语言程序设计第5章指针 /* example 5-7 通过指针访问字符串常量通过指针访问字符串常量 */ #include void main(void) char *p;/* 说明指向字符的指针说明指向字符的指针p */ int iNumOfi; p = “This is a test string”; /* 指针指向字符串常量指针指向字符串常量 */ iNumOfi = 0; while(*p!=0) if(*p = i) iNumOfi+; p+; printf(In the string the number of i = %

26、dn,iNumOfi); 【例【例5-7】统计字符串常量中的小写字母】统计字符串常量中的小写字母i的数量。的数量。C语言程序设计第5章指针/* example 5-8 通过指针访问字符数组通过指针访问字符数组 */#include void main(void) char str80, *chp; /* 说明字符数组及指向字符的指针说明字符数组及指向字符的指针 */ chp = str; /* 指针指向字符数组指针指向字符数组 */ gets(chp); while(*chp != 0) if(*chp = a & *chp = z) *chp -= 32;chp+; /* 指针指向下

27、一字符指针指向下一字符 */ puts(str); 【例【例5-8】输入字符串,将其中小写字母转换成大写字符,其余的】输入字符串,将其中小写字母转换成大写字符,其余的字符不变,输出结果。字符不变,输出结果。C语言程序设计第5章指针举例:将字符串中的大写字母转化对应的小写字母。举例:将字符串中的大写字母转化对应的小写字母。#include void main(void) char *p,s80; p=s; gets(p); for(;*p!=0;p+) if(*p=A&*p=Z) *p+=32; p=s; puts(p); C语言程序设计第5章指针举例:将无符号的八进制字符串转换为十进制

28、整数。举例:将无符号的八进制字符串转换为十进制整数。#include void main(void) char *p,s6; int i,n=0; p=s; gets(p); for(;*p!=0;p+) n=n*8+*p-0; printf(“%dn”,n); p指向指向s数组。数组。输入字符串。输入字符串。sps5560n=0*8+5-05n=5*8+5-045n=45*8+6-0366思考题:将思考题:将4位十六进值字符串转化为十进制字符串。位十六进值字符串转化为十进制字符串。C语言程序设计第5章指针5.4 指指 针针 数数 组和指向指针的指针组和指向指针的指针 指针是存放其它数据对象地

29、址的指针是存放其它数据对象地址的变量变量。因此,指针可以构成。因此,指针可以构成数数组组。每个数组元素为一个指针变量,且在内存中连续存放。每个数组元素为一个指针变量,且在内存中连续存放。指针数组的说明指针数组的说明说明格式:说明格式: type *数组名数组名const exp;int *p 4 ;含义是含义是在内存中开辟空间,并指明元素所指向的对象的类型。在内存中开辟空间,并指明元素所指向的对象的类型。p 0 p 1 p 2 p 3 数组名数组名p为数组的地址。为数组的地址。使用前必须让各元素指向对象。使用前必须让各元素指向对象。int i, a34, *p3;for(i=0;i3;i+)

30、p i =a i ;*(p2+1)=2; /*通过指针数组引用数组元素通过指针数组引用数组元素a21*/ C语言程序设计第5章指针 /* example 5-9 通过指针数组访问二维数组通过指针数组访问二维数组 */ #include void main(void) int a34; int *p3; /* 说明行数相同的指针数组说明行数相同的指针数组 */ int i,j; int iSumOfPosi,iCountOfPosi; for(i=0; i3; i+) pi = ai; /* 指针数组元素指向对应的行指针数组元素指向对应的行 */ for(j=0; j4; j+) scanf(%

31、d,pi + j); iSumOfPosi = 0; iCountOfPosi =0;【例【例5-9】统计】统计3行行4列整型二维数组中正数的个数,并求正数的累列整型二维数组中正数的个数,并求正数的累加和,输出结果。加和,输出结果。C语言程序设计第5章指针 for(i=0; i3; i+) for(j=0; j 0) iSumOfPosi += *(pi+j); /* 通过指针数组访问二维通过指针数组访问二维数组数组 */ iCountOfPosi+; printf(The sum of posi-numb in array is %dn,iSumOfPosi); printf(The num

32、ber of posi-numb in array is %dn,iCountOfPosi); C语言程序设计第5章指针指针数组的应用举例指针数组的应用举例指针数组与多维数组指针数组与多维数组 通过指针数组按数学方式输出数组的值。通过指针数组按数学方式输出数组的值。#include void main ( ) int i , j; int a34= 1,2,3,4, 5,6,7,8, 9,10,11,12 ; int *p3; p0 = a0; p1 = a1 ; p2 = a2; for (i=0 ; i3 ; i+) for (j=0; j4; j+) printf (“ %5d” , *

33、(pi+j); printf ( “n” ) ; 123456789 101112 p0数组数组a的二维结构的二维结构p1p2a0a1a2每输出一行,打印回车。每输出一行,打印回车。C语言程序设计第5章指针 /* example 5-10 通过指针数组访问二维字符数组通过指针数组访问二维字符数组 */ #include #include void main(void) char strName510,*strP5,*strTemp = NULL; int i,j; for(i=0; i5; i+) strPi = strNamei;/* 指针数组的各个元素指向字符数组的指针数组的各个元素指向字

34、符数组的对应行对应行 */ gets(strPi); for(i=0; i4; i+) for(j=i+1; j 0) /* 比较比较 */ 【例【例5-10】对存放于二维字符数组中的五个字符串按由小到大排序】对存放于二维字符数组中的五个字符串按由小到大排序输出。输出。C语言程序设计第5章指针 strTemp = strPi; strPi = strPj; strPj = strTemp; printf(The result after sort:n); for(i=0; i5; i+) puts(strPi); /* 输出输出 */ C语言程序设计第5章指针指针数组与多字符串指针数组与多字符

35、串通过指针数组构成的菜单,执行通过指针数组构成的菜单,执行DOS命令。命令。#include void main(void )char *command = “dir”, “time”, “date”, ch ; for ( ; ; ) do printf (“1: directoryn”) ; printf (“2:set timen” ) ; printf (“3:set daten”) ; printf (“4:quitn”) ; printf (nselection:”) ; ch =getchar( ) ; printf (“n”) ; while (ch4) ; if (ch=4)

36、 break; system (commandch-1) ; 内层循环输入选项内层循环输入选项外层循环根据选项执行命令外层循环根据选项执行命令执行系统命令函数,如执行系统命令函数,如:system(“dir”);dir0time0date0command0command1command23-1 2C语言程序设计第5章指针【例【例5-11】输入】输入0到到6的数字分别代表周日到周六,输出英文名称。的数字分别代表周日到周六,输出英文名称。/* example 5-11 字符型指针数组与字符串常量字符型指针数组与字符串常量 */#include void main(void) char *strDa

37、y7 = “Sunday”,“Monday”,“Tuesday”,Wednesday, Thursday,Friday,Saturday; int iDay; scanf(%d,&iDay); if(iDay = 0 & iDay = 6) puts(strDayiDay); else puts(Input error!); C语言程序设计第5章指针指向指针的指针指向指针的指针 如果指针变量的内容存放其它指针的地址,称该指针为指向指如果指针变量的内容存放其它指针的地址,称该指针为指向指针的指针。针的指针。 指向指针的指针的说明:指向指针的指针的说明:形式:形式: type *p

38、;int *p;p是一个指向整形指针的是一个指向整形指针的指针指针。#include void main ( void) int x, *p, *q ; x=10; p=&x; q=&p; printf (“%d” , * *q) ; p为指向整型的指针。为指向整型的指针。q为指向整型指针的指针。为指向整型指针的指针。xpq2000H3000H102000H3000HC语言程序设计第5章指针指向指针的指针的应用指向指针的指针的应用指向指针的指针一般用于多维数组和指针数组的操作。指向指针的指针一般用于多维数组和指针数组的操作。多维数组多维数组#include void main

39、( ) int a34=1,2,3,4,5,6,7,8,9,10,11,12, ; int *arr3 = a0 , a1 , a2 ; int i ,j, *p ; p=arr ; for (i=0 ;i3; i+) for (j=0 ; i4 ; j+) printf(“%5d” , *( *(p+i)+ j ) ) ; printf (“n”) ;aiaij123456789101112a0a1a2arrarrpp+1C语言程序设计第5章指针【例【例5-12】指向指针的指针的简单应用。】指向指针的指针的简单应用。/* example 5-12 通过指向指针的指针访问简单变量示例通过指向指

40、针的指针访问简单变量示例 */#include void main(void) int x,*p,*q; /* 说明变量、指针、指向指针的指针说明变量、指针、指向指针的指针 */ x = 20; p = &x; /* 指针指向变量指针指向变量 */ q = &p; /* 指向指针的指针指向指针指向指针的指针指向指针 */ printf(“x=%dn”,*q); /* 引用指向的对象引用指向的对象 */C语言程序设计第5章指针 /* example 5-13 通过指向指针的指针与指针数组访问二维数组通过指向指针的指针与指针数组访问二维数组 */ #include void mai

41、n(void) int a34,*p3,*pp; /* 说明二维数组及与其行数相同的指针数组说明二维数组及与其行数相同的指针数组 */ int i,j; float iAvg; for(i=0; i3; i+) pi = ai; /* 指针数组元素指向对应的行指针数组元素指向对应的行 */ for(j=0; j4; j+) scanf(%d,pi + j); pp = p; /* pp指向指针数组指向指针数组 */ iAvg = 0; for(i=0; i3; i+) for(j=0; j4; j+) iAvg += *(*(pp + i) +j); /* 通过通过pp访问访问aij */ p

42、rintf(The average of a is %fn,iAvg/12); 【例【例5-13】通过指向指针的指针与指针数组,求二维数组的平均值。】通过指向指针的指针与指针数组,求二维数组的平均值。C语言程序设计第5章指针用于处理多字符串用于处理多字符串#include void main (void) char *name = “one” , “two” , “three” , “four” ; char *p ; int i ; for ( i=0 ; i4 ; i+) p=name+i ; printf (“%sn”, *p) ; name0name1name2name3pname+ione0two0three0four0C语言程序设计第5章指针指针的类型问题指针的类型问题 通过指针可以访问基本类型的变量及数组,指针的类型是其指通过指针可以访问基本类型的变量及数组,指针的类型是其指向数据的类型,该类型决定了指针逻辑加一时所加的物理字节数。向数据的类型,该类型决定了指针逻辑加一时所加的物理字节数。可以强制转换指针的类型,转换方式为:可以强制转换指针的类型,转换方式为:(type *) p#include void main( ) char a3, *p ; int y; a0=0 x12 ; a1=0 x34

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论