武汉理工大学计算机学院信也技术员000000000000009000000计算机程序设计基础C语言900主讲教师:吕曦武汉理工大学Wuhan Universityof Technology
主讲教师:吕 曦
计算机程序设计基础语言指针数组电电电香武汉理工大学Wuhan Universityof Technology
计算机程序设计基础C语言 ⚫ 指针数组
指针数组元素均为指针类型数据的数组称为指针数组,即数组中的每一个元素都是指针变量。指针数组的定义形式为:类型标识符变量名[常量表达式]例如:char*pChar[5];注意区分:int*p5l和int(*p)「5l指针数组常用于处理字符串。可对长度不等的字符串排序。nameFrance-England+China?+America
元素均为指针类型数据的数组称为指针数组,即数组中的每 一个元素都是指针变量。 指针数组的定义形式为: 类型标识符 变量名[常量表达式] 例如:char *pChar[5]; 注意区分:int *p[5]; 和 int (*p)[5]; 指针数组常用于处理字符串。可对长度不等的字符串排序。 ● ● ● ● America China England name France
例:将指针数组中的国名按字典顺序排序(1#include<stdio.h>#include <string.h>10#defineMAx LEN//字符串最大长度#defineN 150//字符串个数int main)(int i,j,n;charname[N][MAXLEN];//定义二维宇符数组char *pstr[N];//定义字符指针数组char *temp = NULL;/因交换的是字符串的地址值所以temp定义为指针变量printf("How many countries?");scanf("%d",&n);getchar();//读走输入缓冲区中的回车符printf("Input their names:\n");for(i=o;i<n;i++)(gets(name[il);//输入n个字符串pstr[i]=name[i]//指针数组元素初始化为二维字符数组的行地址1
#include <stdio.h> #include <string.h> #define MAX_LEN 10 //字符串最大长度 #define N 150 //字符串个数 int main(){ int i,j,n; char name[N][MAX_LEN]; //定义二维字符数组 char *pStr[N]; //定义字符指针数组 char *temp = NULL; //因交换的是字符串的地址值, 所以temp定义为指针变量 printf("How many countries?"); scanf("%d",&n); getchar(); //读走输入缓冲区中的回车符 printf("Input their names:\n"); for (i=0;i<n;i++){ gets(name[i]); //输入n个字符串 pStr[i]=name[i] //指针数组元素初始化为 二维字符数组的行地址 } 例:将指针数组中的国名按字典顺序排序(1)
(2)例:将指针数组中的国名按字典顺序排序/★采用交换法实现字符串按字典顺序排序*/for(i=o:i<n-lii++)for(j=i+lij<n;j++)(if(strcmp(pstr[j],pstr[il)<o)(//交换指向字符串的指针temp=pstr[i];pstr[i]=pstr[j];pstr[j]=temp;Lprintf("Sorted results:\n");for(i=oii<nii++)//输出排序后的n个字符串puts(pstr[ij);getch() ;指针数组*s的每个元素都是一个(字串)基地址
/* 采用交换法实现字符串按字典顺序排序 */ for(i=0;i<n-1;i++){ for(j=i+1;j<n;j++){ if(strcmp(pStr[j],pStr[i])<0){ //交换指向字符串的指针 temp=pStr[i]; pStr[i]=pStr[j]; pStr[j]=temp; } } } printf("Sorted results:\n"); for(i=0;i<n;i++) //输出排序后的n个字符串 puts(pStr[i]); getch(); } 指针数组*s的每个元素都是一个(字串)基地址。 例:将指针数组中的国名按字典顺序排序(2)