C语言指针数组使用案例【二级指针之指针数组】

来源:互联网 发布:aa录音软件下载 编辑:程序博客网 时间:2024/06/08 03:42
有如下程序示例,完成对指针数组的元素打印输出及排序:
#include <stdlib.h>#include <stdio.h>#include <string.h>int main(){int i = 0;int j = 0;int arrayNum = 0;//初始化元素个数变量char *temp = NULL;char * testArray[] = { "aasasa", "ababdssd", "dfdfd", "1111wed" };arrayNum = sizeof(testArray) / sizeof(testArray[0]);//求出数组元素个数//对指针数组元素的打印输出for (i = 0; i < arrayNum; i++){printf("方式1输出%s\n", testArray[i]);//按数组编号取值printf("方式2输出%s\n", *(testArray+i));//运用指针地址上取值方式}//对指针数组元素的排序输出printf("排序前输出:\n");for (i = 0; i < arrayNum; i++){printf("%s\n", *(testArray + i));//运用指针地址上取值方式}for (i = 0; i < arrayNum; i++){for (j = i +1 ; j < arrayNum; j++){if (strcmp(testArray[i], testArray[j]) > 0){temp = testArray[i];//交换的是指针的值testArray[i] = testArray[j];testArray[j] = temp;}}}printf("排序后输出:\n");for (i = 0; i < arrayNum; i++){printf("%s\n", *(testArray + i));//运用指针地址上取值方式}system("pause");return 0;}/*运行结果:方式1输出aasasa方式2输出aasasa方式1输出ababdssd方式2输出ababdssd方式1输出dfdfd方式2输出dfdfd方式1输出1111wed方式2输出1111wed排序前输出:aasasaababdssddfdfd1111wed排序后输出:1111wedaasasaababdssddfdfd请按任意键继续. . .*/


现将打印,排序分别封装进两个独立的函数完成,对上面的程序进行修改优化,利用二级指针做参数输入示例:

#include <stdlib.h>#include <stdio.h>#include <string.h>//对指针数组元素的打印输出void printArray(char **testArray, int arrayNum){for (int i = 0; i < arrayNum; i++){printf("方式1输出%s\n", testArray[i]);//按数组编号取值printf("方式2输出%s\n", *(testArray + i));//运用指针地址上取值方式}}//对指针数组元素的排序输出void sortArray(char **testArray, int arrayNum){int i = 0; int j = 0;char *temp = NULL;printf("排序前输出:\n");for (i = 0; i < arrayNum; i++){printf("%s\n", *(testArray + i));//运用指针地址上取值方式}for (i = 0; i < arrayNum; i++){for (j = i + 1; j < arrayNum; j++){if (strcmp(testArray[i], testArray[j]) > 0){temp = testArray[i];//交换的是指针的值testArray[i] = testArray[j];testArray[j] = temp;}}}printf("排序后输出:\n");for (i = 0; i < arrayNum; i++){printf("%s\n", *(testArray + i));//运用指针地址上取值方式}}int main(){intarrayNum = 0;//初始化元素个数变量char * testArray[] = { "aasasa", "ababdssd", "dfdfd", "1111wed" };arrayNum = sizeof(testArray) / sizeof(testArray[0]); //算出元素个数//打印输出printArray(testArray, arrayNum);//排序输出sortArray(testArray, arrayNum);system("pause");return 0;}/*运行结果:方式1输出aasasa方式2输出aasasa方式1输出ababdssd方式2输出ababdssd方式1输出dfdfd方式2输出dfdfd方式1输出1111wed方式2输出1111wed排序前输出:aasasaababdssddfdfd1111wed排序后输出:1111wedaasasaababdssddfdfd请按任意键继续. . .*/


0 0
原创粉丝点击