收藏 分享(赏)

指针数组的初始化.ppt

上传人:hskm5268 文档编号:7966937 上传时间:2019-05-31 格式:PPT 页数:16 大小:225KB
下载 相关 举报
指针数组的初始化.ppt_第1页
第1页 / 共16页
指针数组的初始化.ppt_第2页
第2页 / 共16页
指针数组的初始化.ppt_第3页
第3页 / 共16页
指针数组的初始化.ppt_第4页
第4页 / 共16页
指针数组的初始化.ppt_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、指针数组赋值与初始化,char name59=“gain”,“much”,“stronger”, “point”,“bye”;,char *name5=“gain”,“much”,“stronger”, “point”,“bye”;,二维数组与指针数组区别:,二维数组存储空间固定字符指针数组相当于可变列长的二维数组,指针数组元素的作用相当于二维数组的行名 但指针数组中元素是指针变量二维数组的行名是地址常量,void main() void sort(char *name , int n);void print(char *name , int n);char *name =“Follow me

2、“,“BASIC“, “Great Wall“,“FORTRAN“,“Computer “;int n=5;sort(name, n);print(name, n); void sort(char *name , int n) char *temp;int i, j, k;for(i=0;i0) k=j;if(k!=i) temp=namei; namei=namek; namek=temp; ,i=0,例 对字符串排序(简单选择排序),例 对字符串排序(简单选择排序),void main() void sort(char *name , int n), print(char *name ,

3、int n);char *name =“Follow me“,“BASIC“, “Great Wall“, “FORTRAN“,“Computer “;int n=5;sort(name,n);print(name,n); void sort(char *name , int n) char *temp;int i, j, k;for(i=0;i0) k=j;if(k!=i) temp=namei; namei=namek; namek=temp; ,name0,name1,name2,name3,name4,name,Great Wall,FORTRAN,Computer,Follow me

4、,BASIC,i=1,例 对字符串排序(简单选择排序),void main() void sort(char *name , int n), print(char *name , int n);char *name =“Follow me“,“BASIC“, “Great Wall“, “FORTRAN“,“Computer “;int n=5;sort(name, n);print(name, n); void sort(char *name, int n) char *temp;int i, j, k;for(i=0;i0) k=j;if(k!=i) temp=namei; namei=n

5、amek; namek=temp; ,name0,name1,name2,name3,name4,name,Great Wall,FORTRAN,Computer,Follow me,BASIC,i=2,例 对字符串排序(简单选择排序),void main( ) void sort(char *name , int n), print(char *name , int n);char *name =“Follow me“,“BASIC“, “Great Wall“, “FORTRAN“,“Computer “;int n=5;sort(name, n);print(name, n); void

6、 sort(char *name ,int n) char *temp;int i, j, k;for(i=0;i0) k=j;if(k!=i) temp=namei; namei=namek; namek=temp; ,name0,name1,name2,name3,name4,name,Great Wall,FORTRAN,Computer,Follow me,BASIC,i=3,例 对字符串排序(简单选择排序),void main() void sort(char *name , int n);void print(char *name , int n);char *name =“Fol

7、low me“,“BASIC“, “Great Wall“, “FORTRAN“,“Computer “;int n=5;sort(name, n);print(name, n); void sort(char *name , int n) char *temp;int i, j, k;for(i=0; i0) k=j;if(k!=i) temp=namei; namei=namek; namek=temp; ,name0,name1,name2,name3,name4,name,Great Wall,FORTRAN,Computer,Follow me,BASIC,#include “str

8、ing.h“ void main( ) void sort (char *name , int n );void print (char *name , int n );static char *name = “CHINA“, “AMERICA“,“AUSTRALIA“, “FRANCE“, “GERMAN “ ;int n=5;sort(name, n);print(name, n); ,【例】输入5个国名并按字母顺序排列后输出。,void sort(char *name , int n) char *pt;int i, j, k;for(i=0; i0) k=j;if( k!=i ) pt

9、=namei;namei=namek;namek=pt; void print(char *name , int n) int i;for (i=0; in; i+) printf(“%sn“, namei); ,说明:在以前的例子中采用了普通的排序方法,逐个比较之后交换字符串的位置。交换字符串的物理位置是通过字符串复制函数完成的。反复的交换将使程序执行的速度很慢,同时由于各字符串(国名)的长度不同,又增加了存储管理的负担。用指针数组能很好地解决这些问题。把所有的字符串存放在一个数组中,把这些字符数组的首地址放在一个指针数组中,当需要交换两个字符串时,只须交换指针数组相应两元素的内容(地址)即

10、可,而不必交换字符串本身。,程序定义了两个函数,一个名为 sort完成排序,其形参为指针数组 name,即为待排序的各字符串数组的指针。形参n为字符串的个数。另一个函数名为 print,用于排序后字符串的输出,其形参与 sort的形参相同。主函数main中,定义了指针数组name 并作了初始化赋值。然后分别调用 sort函数和 print函数完成排序和输出。值得说明的是在sort函数中,对两个字符串比较,采用了strcmp函数,strcmp函数允许参与比较的字符串以指针方式出现。namek 和namej 均为指针,因此是合法的。字符串比较后需要交换时,只交换指针数组元素的值,而不交换具体的字符

11、串,这样将大大减少时间的开销,提高了运行效率。,第八节 有关指针的数据类型和指针运算的小结,有关指针的数据类型的小结,二、指针运算小结1、指针变量加/减运算p+、p -、p+i、p-i、p+=i、p-=i加1表示指向下一个数据。,一个指针变量加(减)一个整数并不是简单地将原值加(减)一个整数, 而是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数加(减)。,2、指针变量赋值 p = 指针p2的值赋给指针p1,即p1、p2所指的数据相同,注意:1)不能把一个整型变量赋给指针变量。如:p = 1000;只能将变量已分配的地址赋给指针变量。2)不能把指针变量的值赋给一个整型变量。

12、如:int i; i = p;3、指针变量可以有空值,即该指针不指向任何变量表示如下:p = NULL; /*p不指向任何数据*/在stdio.h中,NULL被定义为0:#define NULL 0,思考:能够赋给指针的唯一整数是,0,习惯上,不使用 p = 0,而使用 p = NULL。 指针变量p可以与NULL作比较,例: if (p = NULL) . 注意:空指针不指向任何数据,与p未赋值不同。当p未赋值时,其值是不确定的,而空指针的值是确定数0。4、指针变量相减。 当p1、p2指向同一个数组的元素,指针相假p2-p1等于p1、p2间的元素个数。 注意:指针相加无意义。,5、两个指针的比较 当p1、p2指向同一个数组的元素时,可以比较,如:p1 p2;若p1、p2不是指向同一个数组的元素,比较无意义。,三、空类型指针 void void *p,表示p是空类型指针,不指定它是指向哪一种类型数据的,即它可以指向任何数据类型。空类型指针与其他类型指针之间赋值时,应进行强制类型转换。例如: char *p1; void *p2;p1 = (char *)p2; p2 = (void *)p1;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报