C語言 指針數(shù)組的使用
指針數(shù)組一般可以指向多個字符串,對字符串的操作將更靈活。
【例題】姓名升序輸出
輸入若干個人的姓名,請將這些人的名字按字母順序升序輸出。
算法分析:
將這些人的姓名字符串的首地址賦給一個字符指針數(shù)組的各個元素,如圖所示。這些姓名字符串是常量字符串,常量字符串不可以使用字符串復制函數(shù)strcpyO來互相復制,因此可以考慮改變name[]數(shù)組中各個元素的指向。也就是說將name[0]指針指向最小的字符串,name[4]指針指向最大的字符串,那么在排序算法中,只需讓指針之間相互交換即可。
name[0] | —? | Z | h | a | n | g | s | d | n | \0 | |
name[1] | —? | L | i | 5 | i | \0 | |||||
name[2] | —? | W | a | n | 9 | w | u | \0 | |||
name[3] | —? | Z | h | d | 0 | l | i | u | \0 | ||
name[4] | —? | H | a | n | q | i | \0 |
程序代碼如下:
#include <stdio.h>
void sort(char *name[], int count) /* 對字符指針數(shù)組進行了排序 */
{
char *t;
int i,j,min;
for(i=0; i<count-l; i++) /* 冒泡法排序 */
for(j=O; j<count-l-i; j++)
if(strcmp(name[j],name[j+1])>0)
{
t=name[j];
name[j]=name[j+1];
name[j+1]=t;
}
}
main()
{
char *name[5]={"Zhangsan","LIsi","Wangwu","Zhaoliu","Hanqi"}
int i=0;
sort(name,5); /*使用字符指針數(shù)組名作實參,調用排序函數(shù)sort()*/
for(; i<5; i++)
printf("%s\n",name[i]);
}
程序執(zhí)行,輸出結果為:
Hanqi
Lisi
Wangwu
Zhangsan
Zhaoliu
點擊加載更多評論>>