• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C语言实现二级指针表示字符串数组

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

头文件:

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

函数原型:

char ** createBuff(char **buff, int arraylength, int charLength); //创建二级指针

void initDemo(char **buff, int arrayLength);    //初始化二级指针

void destoryBuff(char **buff, int arrayLength);    //销毁二级指针

void printBuff(char ** buff, int arrayLength);    //遍历二级指针

void sortBuffArray(char ** buff, int arrayLength);    //排序

实现函数:

 1 char ** createBuff(char **buff, int arrayLength, int charLength){
 2 
 3     int i;
 4     
 5     buff = (char **)malloc(sizeof(char *) * arrayLength); //给*buff分配空间,buff指向它的首地址
 6     
 7     for (i = 0; i < arrayLength; ++i){
 8 
 9         buff[i] = (char *)malloc(sizeof(char) * charLength); //*buff[i]分配空间,buff[i]指向它的首地址
10 
11     }
12 
13     return buff;
14 }
15 
16 void initDemo(char **buff, int arrayLength){
17 
18     int i;
19 
20     for (i = 0; i < arrayLength; ++i){
21 
22         sprintf(buff[i], "%d%d%d", i + 1 , i + 1, i + 1);
23 
24     }
25 }
26 
27 void destoryBuff(char **buff, int arrayLength){
28 
29     int i;
30     
31     for (i = 0; i < arrayLength; ++i){
32 
33         if(buff[i] != NULL){
34             
35             free(buff[i]);    
36 
37             buff[i] = NULL;
38 
39         }
40 
41     }
42 
43     if(buff != NULL){
44 
45         free(buff);
46 
47         buff = NULL;
48 
49     }
50 }
51 
52 
53 
54 void printBuff(char ** buff, int arrayLength){
55 
56     int i ;
57 
58     for (i = 0; i < arrayLength; ++i){
59         printf("%s\n", buff[i]);
60     }
61 }
62 
63 void sortBuffArray(char ** buff, int arrayLength){
64 
65     int i, j;
66 
67     char *temp = NULL;
68 
69     for( i = 0; i < arrayLength; ++i){
70 
71         for(j = i + 1; j < arrayLength; ++j){
72 
73             if(strcmp(buff[j], buff[i]) > 0){
74 
75                 temp = buff[i];
76 
77                 buff[i] = buff[j];
78 
79                 buff[j] = temp;
80 
81             }
82 
83         }
84 
85     }
86 
87 }

测试:

void main(){
    
    int arrayLength = 5, charLength = 100;

    char **buff = NULL;

    buff = createBuff(buff, arrayLength, charLength);

    initDemo(buff, arrayLength);

    printf("排序前\n");

    printBuff(buff, arrayLength);

    sortBuffArray(buff, arrayLength);

    printf("排序后\n");

    printArray(buff, arrayLength);

    destoryBuff(buff, arrayLength);

    system("pause");
}

注意:

char **buff 变量不能当作实参传入到createBuff函数中的形参,以为createBuff函数调用结束会释放掉形参buff ,因此只能当作返回值返回或者,函数中定义三级指针,调用时传入buff的地址即可。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
使用C#调用外部Ping命令获取网络连接情况发布时间:2022-07-13
下一篇:
C#验证码识别基础方法及源码发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap