C语言课件11PPT资料.ppt
《C语言课件11PPT资料.ppt》由会员分享,可在线阅读,更多相关《C语言课件11PPT资料.ppt(55页珍藏版)》请在冰豆网上搜索。
i=4;
i+)/*i代表第一个球对应的颜色下标代表第一个球对应的颜色下标*/for(j=0;
j=4;
j+)/*j代表第二个球对应的颜色下标代表第二个球对应的颜色下标*/if(i=j)continue;
/*两个球不能同色两个球不能同色*/count+;
printf(%6d,count);
printf(%10s%10sn,colori,colorj);
return0;
1redblue2redyellow3redgreen4redpurple5blueyellow6bluegreen7bluepurple8yellowgreen9yellowpurple10greenpurple指针数组指针数组11.1.2指针数组的概念指针数组的概念char*color5;
类型名类型名*数组名数组名数组长度数组长度数组元素是指针类型,用于存放内存地址数组元素是指针类型,用于存放内存地址inta10;
a是一个数组,它有是一个数组,它有10个元素个元素每个元素的类型都是整型每个元素的类型都是整型char*color5;
color是一个数组,它有是一个数组,它有5个元素个元素每个元素的类型都是每个元素的类型都是字符字符指针指针char*color5=red,blue,yellow,green,purple;
color是一个数组,它有是一个数组,它有5个元素个元素每个元素的类型都是每个元素的类型都是字符字符指针指针数组元素可以处理字符串数组元素可以处理字符串对指针数组元素的操作对指针数组元素的操作相当于相当于对同类型指针变量的操作对同类型指针变量的操作printf(%10s%10sn,colori,colorj);
指针数组的概念指针数组的概念#includeintmain(void)inti;
char*color5=red,blue,yellow,green,purple,*tmp;
i5;
i+)/*输出字符串的地址和内容输出字符串的地址和内容*/printf(%x,%sn,colori,colori);
tmp=color0;
/*交换交换color0与与color4*/color0=color4;
color4=tmp;
printf(color0:
%s,color4:
%sn,color0,color4);
420064,red42005c,blue420054,yellow42004c,green420044,purplecolor0:
purple,color4:
red例例11-2使用指针数组输出使用指针数组输出5种颜色的种颜色的英文名称英文名称交换交换color0与与color4的值的值例例11-2图示图示11.1.3指向指针的指针示例指向指针的指针示例例例11-3改写例改写例11-1,用指向指针的指针实现。
,用指向指针的指针实现。
#includeintmain(void)char*color5=red,blue,yellow,green,purple;
char*pc=color;
intcount=0,i,j;
i+)for(j=0;
j+)if(i=j)continue;
count+;
指向指针的指针指向指针的指针*(pc+i),*(pc+j)指向指针的指针示例分析指向指针的指针示例分析char*color5=red,blue,yellow,green,purple;
printf(%10s%10sn,*(pc+i),*(pc+j);
pc:
color或者或者&
color0*pc:
color0:
red*(pc+i):
colori*color0:
r*pc:
*color0:
r指向指针的指针定义指向指针的指针定义指向指针的指针(指向指针的指针(二级指针二级指针)类型名类型名*变量名变量名inta=10;
int*p=&
a;
int*pp=&
p;
&
apa10&
ppp*p*pp*pp&
apaa10&
pappa*ppa*pa&
bpbb20&
pbppb*ppb*pbpaappa&
a10&
pb*ppb*pa&
pappb*ppa*pbpaappa&
b10&
pb*ppa*pb&
apbb20&
pappb*ppb*papaappa&
b20&
apbb10&
pappb*ppb*painta=10,b=20,t;
int*pa=&
a,*pb=&
b,*pt;
int*ppa=&
pa,*ppb=&
pb,*ppt;
例例11-4操作操作
(1):
ppt=ppb;
ppb=ppa;
ppa=ppt;
操作操作
(2):
pt=pb;
pb=pa;
pa=pt;
操作操作(3):
t=b;
b=a;
a=t;
11.1.4用指针数组处理多个字符串用指针数组处理多个字符串n处理多个字符串处理多个字符串二维字符数组二维字符数组charccolor7=red,blue,yellow,green,purple;
指针数组指针数组char*pcolor=red,blue,yellow,green,purple;
使用指针数组更节省内存空间使用指针数组更节省内存空间1.用指针数组处理多个字符串排序用指针数组处理多个字符串排序例例11-5将将5个字符串从小到大排序后输出。
个字符串从小到大排序后输出。
#includeintmain(void)inti;
inta5=6,5,2,8,1;
voidfsort(inta,intn);
fsort(a,5);
i+)printf(%d,ai);
char*pcolor5=red,blue,yellow,green,purple;
voidfsort(char*color,intn);
fsort(pcolor,5);
i+)printf(%s,pcolori);
例例11-5字符串排序字符串排序voidfsort(inta,intn)intk,j;
inttemp;
for(k=1;
kn;
k+)for(j=0;
jaj+1)temp=aj;
aj=aj+1;
aj+1=temp;
voidfsort(char*color,intn)intk,j;
char*temp;
j0)temp=colorj;
colorj=colorj+1;
colorj+1=temp;
pcolor0pcolor1pcolor2pcolor3pcolorred0blue0yellow0green0purple0pcolor4排序前排序前pcolor0pcolor1pcolor2pcolor3pcolorpcolor4排序后排序后red0blue0yellow0green0purple02.动态输入多个字符串示例动态输入多个字符串示例n用动态分配内存的方法处理多个字符串的输入示例用动态分配内存的方法处理多个字符串的输入示例例例11-6输入一些球的颜色,以输入一些球的颜色,以#作为输入结束标志,作为输入结束标志,再输出这些颜色。
再输出这些颜色。
其中颜色数小于其中颜色数小于20,颜色的英文名称不超过,颜色的英文名称不超过10个字符。
个字符。
#include#include#includeintmain(void)inti,n=0;
char*color20,str10;
printf(请输入颜色名称,每行一个,请输入颜色名称,每行一个,#结束输入:
结束输入:
n);
scanf(%s,str);
while(str0!
=#)colorn=(char*)malloc(sizeof(char)*(strlen(str)+1);
strcpy(colorn,str);
n+;
printf(你输入的颜色是:
你输入的颜色是:
);
in;
i+)printf(%s,colori);
请输入颜色名称,每行一个,请输入颜色名称,每行一个,#结束输入:
redblueyellow#你输入的颜色是:
redblueyellow3.对指针数组的进一步讨论对指针数组的进一步讨论char*color=red,blue,yellow,green,purple;
color:
二级指针:
二级指针(char*),&
color0color+2:
指向:
指向color2*(color+2)和和color2等价等价color0:
指向字符串:
指向字符串red的首字符的首字符rcolor0+2:
指向首字符:
指向首字符r后的第后的第2个字符个字符d对指针数组的进一步讨论对指针数组的进一步讨论
(1)colork*(color+k)printf(%s,color2);
printf(%s,*(color+2);
(2)*(colork+j)*(*(color+k)+j)colorkjprintf(%c%c,*(color2),*(color2+2);
printf(%c%c,color20,color22);
11.1.5命令行参数命令行参数nC语言源程序经编译和连接处理,生成可执行程序语言源程序经编译和连接处理,生成可执行程序后,才能运行。
后,才能运行。
n在在DOS环境的命令窗口中,输入可执行文件名,就环境的命令窗口中,输入可执行文件名,就以命令方式运行该程序。
以命令方式运行该程序。
n输入命令时,在可执行文件(命令)名的后面可以输入命令时,在可执行文件(命令)名的后面可以跟一些参数,这些参数被称为命令行参数。
跟一些参数,这些参数被称为命令行参数。
testworld命令名命令名命令行参数命令行参数#include/*test.c*/intmain()printf(HelloWorld!
命令行参数命令行参数命令名命令名参数参数1参数参数2参数参数n命令名和各个参数之间用空格分隔,也可以没有参数命令名和各个参数之间用空格分隔,也可以没有参数