基本信息
文件名称:C语言程序设计教程(第三版)(微课版)课件 第5章 指针.pptx
文件大小:1.04 MB
总页数:73 页
更新时间:2025-06-27
总字数:约1.02万字
文档摘要

;;内存存放了计算机正在运行的程序和程序正在使用的数据。内存的基本单元是字节(Byte)。;;指针与指针变量

指针:一个变量的地址

指针变量:专门存放变量地址的变量叫~;与*运算符

含义;指针变量;指针变量;指针变量的初始化

一般形式:数据类型*指针名=初始地址值;;例intmain()

{inti=10;

int*p;

*p=i;

printf(%d,*p);

return0;

};inta=20,b=15,c;

int*p1=a,*p2=b;

int*p3;

p3=p2,p2=p1,p1=p3;

c=*p2,*p2=*p1,*p1=c;

;指向数组元素的指针变量;指针的运算

指针变量的赋值运算

p=a;(将变量a地址?p)

p=array;(将数组array首地址?p)

p=array[i];(将数组元素地址?p)

p1=p2;(指针变量p2值?p1)

不能把一个整数?p,也不能把p的值?整型变量;指针的算术运算:

p?i?p?i?d(i为整型数,d为p指向的对象所占字节数)

p++,p--,p+=i,p-=i等

若p1与p2指向同一数组,p1-p2=两指针间元素个数?(p1-p2)/d

p1+p2无意义;指针变量的关系运算

若p1和p2指向同一数组,则

p1p2表示p1指的元素在前

p1p2表示p1指的元素在后

p1==p2表示p1与p2指向同一元素

若p1与p2不指向同一数组,比较无意义

;数组元素表示方法;;例:通过指针求数组中所有元素的平均值。

#includestdio.h

intmain()

{

inta[10],i;

floatsum=0;

printf(Enter10integers:\n);

for(i=0;i10;i++)

{

scanf(%d,a+i);//a+i和a[i]是等价的

sum+=*(a+i);//*(a+i)和a[i]是等价的

}

printf(Theaverageofthe10integersis:%f\n,sum/10);

return0;

}

;例:用指针求数组中的最大值及其位置。

#includestdio.h

intmain()

{inta[10],*p,*pMax;

printf(Enter10integers:\n);

for(p=a;pa+10;p++)

scanf(%d,p);

pMax=a;/*设下标为0的元素为最大值*/

p=a+1;

for(;pa+10;p++)

{

if(*p*pMax)

pMax=p;/*pMax保存最大元素的地址*/

}

printf(Themaxis%d\n,*pMax);

printf(ThepositionofMaxis%d\n,pMax-a);

return0;

};intmain()

{inti,*p,a[7];

p=a;

for(i=0;i7;i++)

scanf(%d,p++);

printf(\n);

for(i=0;i7;i++,p++)

printf(%d,*p);

return0;

};intmain()

{intt,*p,*q,a[7];

for(p=a;pa+7;p++)

scanf(%d,p);

for(;pq;p++,q--)

{t=*p;

*p=*q;

*q=t;

}

……

return0;

};例对一维数组中的数据按由小到大的顺序排序;练习:;二维数组的地址;对于二维数组:

(1)a是数组名,

包含三个元素

a[0],a[1],a[2]

(2)每个元素a[i]

又是一个一维

数组,包含4个