C语言教程第六章:指针
日期:2007年8月29日 作者: 查看:[大字体 中字体 小字体]-
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"};
char *ps;
int i;
char *day_name(char *name[],int n);
printf("input Day No:\n");
scanf("%d",&i);
if(i<0) exit(1);
ps=day_name(name,i);
printf("Day No:%2d-->%s\n",i,ps);
}
char *day_name(char *name[],int n)
{
char *pp1,*pp2;
pp1=*name;
pp2=*(name+n);
return((n<1n>7)? pp1:pp2);
}
下例要求输入5个国名并按字母顺序排列后输出。在以前的例子中采用了普通的排序方法, 逐个比较之后交换字符串的位置。交换字符串的物理位置是通过字符串复制函数完成的。 反复的交换将使程序执行的速度很慢,同时由于各字符串(国名) 的长度不同,又增加了存储管理的负担。 用指针数组能很好地解决这些问题。把所有的字符串存放在一个数组中, 把这些字符数组的首地址放在一个指针数组中,当需要交换两个字符串时, 只须交换指针数组相应两元素的内容(地址)即可,而不必交换字符串本身。程序中定义了两个函数,一个名为sort完成排序, 其形参为指
针数组name,即为待排序的各字符串数组的指针。形参n为字符串的个数。另一个函数名为print,用于排序后字符串的输出,其形参与sort的形参相同。主函数main中,定义了指针数组name 并作了初始化赋值。然后分别调用sort函数和print函数完成排序和输出。值得说明的是在sort函数中,对两个字符串比较,采用了strcmp 函数,strcmp函数允许参与比较的串以指针方式出现。name[k]和name[ j]均为指针,因此是合法的。字符串比较后需要交换时, 只交换指针数组元素的值,而不交换具体的字符串, 这样将大大减少时间的开销,提高了运行效率。
现编程如下:
#include"string.h"
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);
}
void sort(char *name[],int n){
char *pt;
int i,j,k;
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[k],name[j])>0) k=j;
if(k!=i){
pt=name[i];
name[i]=name[k];
name[k]=pt;
}
}
}
void print(char *name[],int n){
int i;
for (i=0;i<n;i++) printf("%s\n",name[i]);
}
main函数的参数
前面介绍的main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为: - 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] 下一页
-
- C语言教程第六章:指针 相关文章:
- ·C语言教程第六章:指针
- ·2004年最一针见血的279句话
- ·针式打印机打印头故障维修
- ·用VB编写简单的时钟程序(有时、分、秒针转动)
- ·370CPU针脚图
- ·关于socketA和CPU针脚定义
- ·针对ARP病毒攻击防治进阶经验谈
- ·C++引用计数的智能指针有效回收方法
- ·C++指针直接调用类成员函数探讨
- ·增添绚丽色彩 QQ空间鼠标指针免费用
- C语言教程第六章:指针 相关软件
- ·精美可爱的猪猪鼠标指针
- ·指南针智能决策系统 V2.2.2.169
- ·精美鼠标指针Basic S For sbpsonrg
- ·新仙鹤神针
- ·铁笛神针
- ·Desktop Lock(桌面别针) V7.1.2
- ·要把金针度与人
- ·光明垃圾邮件过滤器(邮件探针) V6.0
- ·针式背单词 V2.00.16
- ·《侠盗枪手》鼠标指针补丁
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:C语言教程第八章:枚举,位运算
精品推荐
热点TOP10
- ·C语言教程第六章:指针
- ·C/C++笔试、面试题目大汇总
- ·MSComm控件使用详解
- ·学生成绩管理系统实习
- ·Windows下C语言网络编程快速入门
- ·飞机订票系统设计
- ·c#.net连接access操作类
- ·进程调度模拟程序
- ·打字游戏
- ·C#基础概念二十五问
- ·makefile规则
- ·C语言的常用库函数使用方法分析及用途
- ·Windows编程基础 - 概述
- ·c语言中的结构(struct)和联合(union)简介
- ·一个简单的链表程序
- ·GDB 的文档
- ·漫谈C++ Builder多线程编程技术
- ·VC下调用ACM音频编程接口压缩Wave音频
- ·C语言教程第五章:函数
- ·ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题
特别推荐
- ·C#基础概念二十五问
- ·利用C#远程存取Access数据库
- ·入门教程:实例详解C++友元
- ·C语言基础教程(三)输入输出函数及控制流程语句
- ·VC下调用ACM音频编程接口压缩Wave音频
- ·如何在C/C++中调用Java
- ·设计的一个计算器类的源代码,很简陋哦,请各位高手不要见笑!
- ·gSOAP中内存的使用
- ·Windows下C语言网络编程快速入门
- ·C语言教程第六章:指针
- ·漫谈C++ Builder多线程编程技术
- ·学生成绩管理系统实习
- ·用C#实现pdf文件的完整性验证
- ·将程序从托管扩展 C++ 迁移到 C++/CLI(1)
- ·链表的c语言实现(六)
- ·C语言库函数 (D类字母)
- ·用AVIFile函数制做AVI文件基本步骤
- ·利用C++实现的贪吃蛇游戏
- ·Windows API-GDI入门基础知识详解(3)
- ·C语言库函数 (C类字母)
