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编辑过]