caoxwei2 2015-01-06 08:45 采纳率: 100%
浏览 2502
已采纳

程序问题,请帮忙修改,感谢

#include<stdio.h>
#include<string.h>
int main()
{
    void sort(char * name[],int n);
    char * name[]={"Follow me","Basic","Great Wall","FORTRAN","Computer Design"};
    int i,n=5;
    sort(name,n);
    for(i=0;i<n;i++)
        printf("%s\n",name[i]);
    return 0;
}

void sort(char * name[],int n)
{
    int i,j,k;
    char *temp;
    for(i=0;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
            if(strcmp(name[k],name[j])>0)
                k=j;
        if(i!=k)
        {
            temp=name[i];
            name[i]=name[k];
            name[k]=temp;
        }

    }

}

书上说,不用字符串数组而用字符串指针的原因是字符串长度不一,使用 数组必须制定
长度会造成内存浪费.比如有的字符串的长度次是6,8,20,22,25. 我对它的理解是那如果
用字符串数组就必须指定列长度为25,则第一个字符串有很多空值,造成浪费,那字符数组
则是在第一个字符串之后马上存储第二个字符串,它们应存储在连续的内存空间,才节省内存
但事实相反,用字符串指针在内存中也有很多空值,如下图所示,求解惑内存

  • 写回答

9条回答 默认 最新

  • threenewbee 2015-01-06 10:03
    关注
    #include<string.h>
    
    void sort(char *p[5]);
    
    int main()
    {
        char ** str = (char **)malloc(20);
        str[0] = (char *)&"Follow me";
        str[1] = (char *)&"Basic";
        str[2] = (char *)&"Great Wall";
        str[3] = (char *)&"FORTRAN";
        str[4] = (char *)&"Computer Design";
        sort(str);
        for (int i = 0; i < 5; i++)
        {
            printf("%s\n", str[i]);
        }
    }
    
    void sort(char *p[5])
    {
        int i,j,k;
        char * temp = 0;
        for(i=0;i<5;i++)
        {
            k=i;
            for(j=i+1;j<5;j++)
                if(strcmp(p[i],p[j])>0)
                    k=j;
            if(i!=k)
            {
                temp = p[i];
                p[i] = p[k];
                p[k] = temp;
            }
    
        }
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?