二级指针的应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二级指针的应用相关的知识,希望对你有一定的参考价值。

简单应用:对指针数组中的字符串进行排序(升序);

1、交换指针变量的值;

(1)、代码如下:

#include<stdio.h>
#include<string.h>


void sortByA(char **str, int count);
void sortByA(char **str, int count){
    int i;
    int j;
    char *tmp;

    for(i = 0; i < count; i++){
        for(j = i+1; j < count; j++){
            if((strcmp(*(str+i), *(str+j))) > 0){ //交换的是指针变量;
                tmp = *(str+i);
                *(str+i) = *(str+j);
                *(str+j) = tmp;
            }   
        }   
    }   
}
int main(void){
    char *array[] = {"aaaa", "bbbb", "ccccc", "dddd"};
    int count = sizeof(array)/sizeof(array[0]);
    int i;

    sortByA(array, count);

    for(i = 0; i < count; i++){
        printf("%s ", array[i]);
    }
    printf("\n");

}

(2)、运行结果:

技术分享

(3)、模型分析:

指针变量的交换:中间借助一个临时的指针变量即可;

技术分享


2、交换空间的值

(1)、代码如下:

#include<stdio.h>
#include<string.h>


void sortByA(char (*p)[30], int count);
void sortByA(char (*p)[30], int count){
    int i;
    int j;
    char tmp[30];

    for(i = 0; i < count; i++){
        for(j = i+1; j < count; j++){
            if((strcmp(p[i], p[j]) > 0)){
                strcpy(tmp, p[i]);  //内存块的拷贝
                strcpy(p[i], p[j]);
                strcpy(p[j], tmp);
            }   
        }   
    }   
    
}
int main(void){
    char myArray[][30] = {"aaaaa", "bbbbb", "cccc", "dddddd"};
    int i;
    int count;

    count = sizeof(myArray)/sizeof(myArray[0]);

    sortByA(myArray, count);

    for(i = 0; i < count; i++){
        printf("%s ", myArray[i]);
    }
    printf("\n");

    return 0;
}

(2)、运行结果:

技术分享

(3)、模型分析:

技术分享

本文出自 “wait0804” 博客,请务必保留此出处http://wait0804.blog.51cto.com/11586096/1874769

以上是关于二级指针的应用的主要内容,如果未能解决你的问题,请参考以下文章

20160210.CCPP体系详解(0020天)

C语言二级指针应用详解

20160210.CCPP体系详解(0020天)

二级指针的传递和应用

C 语言结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )

C 语言二级指针作为输出 ( 指针输入 | 指针输出 | 二级指针 作为 函数形参 使用示例 )