免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1906 | 回复: 7
打印 上一主题 下一主题

关于C/C++二级指针的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-22 17:17 |只看该作者 |倒序浏览
输入三个字符串,按由小到大输出如ab,abc则abc大
要求:随意输入三个字符串,按由小到大输出,不能用strlen,strcmp等库函数,只能用指针处理

论坛徽章:
0
2 [报告]
发表于 2008-11-22 17:18 |只看该作者
因为我要在该函数中得到修改了一级指针
所以必须用二级指针作为参数

论坛徽章:
0
3 [报告]
发表于 2008-11-22 17:19 |只看该作者
下面是我的程序,但经常出错,有时正确,
#include <stdio.h>
#include <stdlib.h>

int compare(char **a, char **b)
{   
     
     char  *c=NULL;
     int i=0;
     
     while((**(a+i)!='\0')&&(**(b+i)!='\0'))
     {  
        if(**(a+i)>**(b+i))
        {
          return 0;
          }  
        else
          if(**(a+i)==**(b+i))
          {  
             i=i+1;
             continue;
             }
          else
        {
          c=*a;
          *a=*b;
          *b=c;
            return 0;
          }
                                                              
        i++;
        }
     if(**(a+i)!='\0')
     {
          c=*a;
          *a=*b;
          *b=c;
          return 0;
          }
     else
          return 0;  
        
}

     
     

int main()
{   
    char a[100], b[100], c[100];
    char **p, **q, **j;
    char *t, *h, *m;
   
    t=&a[0];
    h=&b[0];
    m=&c[0];
   
    p=&t;
    q=&h;
    j=&m;
   
   scanf("%s",a);
   scanf("%s",b);
   scanf("%s",c);
   

    compare(p,q);
    compare(p,j);
    compare(q,j);
   
    printf("%s\n",*p);
    printf("%s\n",*q);
    printf("%s\n",*j);
   
    system("pause");
    return 0;
   
}

论坛徽章:
0
4 [报告]
发表于 2008-11-22 17:20 |只看该作者
设置三个指针A,B,C
比较函数的作用:
如果A>B
则A指向A(即不变)
否则A指向B
返回,经过三次比较,则得到A指向最大串,B指向第二大串,C指向三串

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
5 [报告]
发表于 2008-11-22 19:28 |只看该作者

回复 #3 xwqc 的帖子

用[code][/code]将代码排下版先。。
这个看这累。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之水原三星
日期:2015-06-02 16:34:202015年亚冠纪念徽章
日期:2015-10-19 18:13:37程序设计版块每日发帖之星
日期:2015-11-08 06:20:00
6 [报告]
发表于 2008-11-22 19:29 |只看该作者
需要用二级指针么?

论坛徽章:
0
7 [报告]
发表于 2008-11-22 19:54 |只看该作者
谢谢楼上两位
看了些代码和资料,问题已解决
我想弄清楚这个问题是想把指针学好点
(1)把代码中包含**(a+i)和**(b+i)分别修改为*(*a+i)和*(*b+i);
(2)把函数形参改为4个int compare(char **a, char **b, char *c ,char *d),用指针c和d比较,用二级指针修改得到修改了的一级指针

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
8 [报告]
发表于 2008-11-22 21:12 |只看该作者
如果作比较的话,偶觉得应该不涉及到修改字符串吧。那用二级指针的目的可能就是存储多个字符串吧。
对于LZ要实现的功能,K&R上应该讲到了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP