增量编译
对b[5][12] = { "zhousi","chang'e","erlangshen","weinasi","liubei" }; 这里面的字符串,按字母表顺序从小到大打印出来
最初版本:
中间版本:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5
//增量编译
//我的目的是按字母顺序,把字符数组里面的几个名字按字母表顺序重新排一遍
void print(char(*p)[12]) {//数组指针
int i;
for (i = 0; i < N; i++) {
puts(p[i]);//p[0]就是第一行
}
}
void printpArr(char **p1) {
int i;
for (i = 0; i < N; i++) {
puts(p1[i]);//p[0]就是第一行
}
}
//二级指针的初始化是某个一级指针变量去地址
//在子函数需要修改主函数内某个一个指针的值,需要二级指针
int main() {
char *pArr[N];
char b[N][12] = { "zhousi","chang'e","erlangshen","weinasi","liubei" };
int i, j;
char *pTmp;//用于交换的中间变量,是一个指向char的指针
for (i = 0; i < N; i++) {//让指针数组中的每一个指针都指向一个字符串
pArr[i] = b[i];
}
/*for (i = 0; i < N; i++) {
puts(b[i]);
}*/
//puts(b[0]);//打印zhousi
print(b);//打印,b[0]到b[4],b[0]="zhousi"
//b是二维数组名
for (i = 1; i < N; i++) {
for (j = 0; j < N - i; j++) {
if (strcmp(pArr[j], pArr[j + 1]) > 0) {
pTmp = pArr[j];
pArr[j] = pArr[j + 1];
pArr[j + 1] = pTmp;
}
}
}
printf("\n--------------------\n");
printpArr(pArr);//
printf("\n--------------------\n");
print(b);//这个是不会变的
return 0;
}
最终版本:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5
//增量编译
//我的目的是按字母顺序,把字符数组里面的几个名字按字母表顺序重新排一遍
void print(char(*p)[12]) {//数组指针
int i;
for (i = 0; i < N; i++) {
puts(p[i]);//p[0]就是第一行
}
}
void printpArr(char **p1) {
int i;
for (i = 0; i < N; i++) {
puts(p1[i]);//p[0]就是第一行
}
}
//二级指针的初始化是某个一级指针变量去地址
//在子函数需要修改主函数内某个一个指针的值,需要二级指针
int main() {
//char *pArr[N];
char b[N][12] = { "zhousi","chang'e","erlangshen","weinasi","liubei" };
int i, j;
char **p2 = (char**)malloc(sizeof(char*)*N);//动态的指针数组才需要在主函数中定义二级指针
char *pTmp;//用于交换的中间变量,是一个指向char的指针
for (i = 0; i < N; i++) {//让指针数组中的每一个指针都指向一个字符串
p2[i] = b[i];
}
/*for (i = 0; i < N; i++) {
puts(b[i]);
}*/
//puts(b[0]);//打印zhousi
print(b);//打印,b[0]到b[4],b[0]="zhousi"
//b是二维数组名
for (i = 1; i < N; i++) {
for (j = 0; j < N - i; j++) {
if (strcmp(p2[j], p2[j + 1]) > 0) {
pTmp = p2[j];
p2[j] = p2[j + 1];
p2[j + 1] = pTmp;
}
}
}
printf("\n--------------------\n");
printpArr(p2);//
printf("\n--------------------\n");
print(b);//这个是不会变的
return 0;
}