#include "stdio.h" #include "stdlib.h" #define n 5 void fun(int **p) { int i,j,k,*temp; for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { if(*(p+i)>*(p+j)) { temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; } } } printf("排序后:\n"); for(i=0;i<n;i++) printf("%d\t",**(p+i)); } int main() { int *a=malloc(n*sizeof(int)); printf("please enter:\n"); for(int i=0;i<n;i++) { scanf("%d",&(*(a+i))); } fun(&a); return 0; }哪里有错误
时间: 2024-03-05 21:54:56 浏览: 492
代码中存在一些错误。首先,在 `fun` 函数中,比较两个指针时应该使用 `*` 运算符,即 `*(p+i) > *(p+j)`。其次,在 `fun` 函数中,交换两个指针时应该使用 `*` 运算符,即 `temp = *(p+i); *(p+i) = *(p+j); *(p+j) = temp;`。最后,在 `main` 函数中,应该将 `a` 作为指针传递给 `fun` 函数,即 `fun(&a);` 应改为 `fun(&&a);`。修改后的代码如下:
```c
#include "stdio.h"
#include "stdlib.h"
#define n 5
void fun(int ***p) {
int i,j,*temp;
for(i=0;i<n;i++) {
for(j=i+1;j<n;j++) {
if(*(*p+i) > *(*p+j)) {
temp = *(*p+i);
*(*p+i) = *(*p+j);
*(*p+j) = temp;
}
}
}
printf("排序后:\n");
for(i=0;i<n;i++) printf("%d\t",*(*p+i));
}
int main() {
int *a=malloc(n*sizeof(int));
printf("请输入:\n");
for(int i=0;i<n;i++) {
scanf("%d",&(*(a+i)));
}
fun(&a);
return 0;
}
```
阅读全文