永发信息网

void f(char **p)应该如何使用?

答案:2  悬赏:20  手机版
解决时间 2021-03-01 00:03
  • 提问者网友:了了无期
  • 2021-02-28 16:28
就是在使用快速排序时,如果我这么定义的话
void quicksort(char **p,int M2)
{
int i1=0,j1=M2-1;
char *key;
key=*(p+0);
此处省略一堆

*(p+i1)=key;
quicksort(p,i1);
quicksort(p+i1+1,M2-i1-1);
}
我知道最后两行是不对的(我省略的那一堆肯定是对的)
我就想知道当用二级指针定义函数参数时,在使用函数时传给函数的参数,也就是函数括号里面应该是什么形式

void quicksort(char **p,int M2)
{
int i1=0,j1=M2-1;
char *key;
key=*(p+0);
if(N<=1)
{
return;
}
while(i1 {
for(;i1 {
if(strcmp(*(p+j1),key)<0)
{
*(p+i1)=*(p+j1);
i1++;
break;
}
}
for(;i1 {
if(strcmp(*(p+i1),key)>0)
{
*(p+j1)=*(p+i1);
j1--;
break;
}
}
}
*(p+i1)=key;
quicksort(p,i1);
quicksort((p+i1+1),M2-i1-1);
}
最佳答案
  • 五星知识达人网友:持酒劝斜阳
  • 2021-02-28 16:54
传入对应的也应该是二级指针类型,也就是说
quicksort(p,i1);
quicksort(p+i1+1,M2-i1-1);
里面的p,p+i1+1也应该是二级指针,不过快速排序为什么用到二级指针呢?
全部回答
  • 1楼网友:独钓一江月
  • 2021-02-28 17:26
已经改过了,错误太多。注意c语言中区分大小写,也就是说大写的p1和小写的p1是不相同的。 和你的程序比较一下: void f(char *p1,char *p2,char *p3) {*p1='a',*p2='b',*p3='c';   p1=p2;  printf("%c,%c,%c\n",*p1,*p2,*p3); } void main() {char c1='1',c2='2',c3='3',*p1=&c1,*p2=&c2,*p3=&c3;  printf("%c,%c,%c\n",c1,c2,c3);  f(p1,p2,p3);  printf("%c,%c,%c\n",*p1,*p2,*p3); } 输出结果 1,2,3 b,b,c a,b,c
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯