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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯