标题:c语言指针练习题答案看不懂几个地方,求大佬指点一下
取消只看楼主
aerobe
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2020-11-10
结帖率:100%
已结贴  问题点数:10 回复次数:2 
c语言指针练习题答案看不懂几个地方,求大佬指点一下
题目是将一个不确定位数的正整数进行三位分节后输出
char *separate(long int);
char *exchange(long int);
int main()
{
    long int num;
    char *p;

    printf("please input a number\n");
    scanf("%ld",&num);
    p=separate(num);
    printf("结果是%s\n\n",p);
    system("PAUSE");
    return 0;
}

char *separate(long int num)
{

    char *p1,*p2=exchange(num),*p3,*pt;
    int count=1;

    p1=p2;
    while(*(p2++)!='\0');
    p3=p2-1;//第一个点就是这里
    p2=p2-2;

    while(p2>p1)
    {
        if(count==3)
        {
          pt=p3++;
          while(pt>=p2)
          {

              *(pt+1)=*pt;
              pt--;
          }
          *p2=',';
          count=1;
          p2--;
        }
        count++;
        p2--;
    }
    return p1;
}
char *exchange(long int num)
{
    char *p,*p1,*p2,temp;

    p=p1=p2=(char*)malloc(30*sizeof(char));
    while(num)
    {
        *p2=num%10+'0';
        p2++;
        num/=10;
    }
    *p2='\0';
    p2--;

    while(p2>p1)//第2个点是这里
    {
        temp=*p2;
        *p2=*p1;
        *p1=temp;
        p2--;
        p1++;
    }
    return p;
}
这里不明白,因为p1和p2都是指针,视频上说只有两个指针指向一个数组的时候才有大小比较意义,还有前面P3=p2-1,说是指向字符串结束标记,为什么?

[此贴子已经被作者于2020-11-10 21:56编辑过]

搜索更多相关主题的帖子: long num while int char 
2020-11-10 21:36
aerobe
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2020-11-10
得分:0 
回复 2楼 rjsp
非常感谢大佬的程序,但是我就是有一个疑问就是两个指针没有指向数组,却可以比较大小是为什么?
2020-11-11 12:51
aerobe
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2020-11-10
得分:0 
回复 4楼 纯蓝之刃
明白了,感谢感谢
2020-11-11 22:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503853-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017816 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved