标签:turn idt 二重指针 alt 结果 class col int mic
1 //利用二重指针实现改变指针数组和数组元素之间的mapping,并没有改变原数组 2 3 #include<stdio.h> 4 int a[5]; 5 int *name[]={&a[0],&a[1],&a[2],&a[3],&a[4]}; 6 int **p; 7 int main() 8 { 9 p=name; 10 void sort(int **,int); 11 void print(int**,int); 12 for(int i=0;i<sizeof(a)/sizeof(int);i++) 13 scanf("%d",*(p+i)); 14 print(p,5); 15 sort(p,5); 16 print(p,5); 17 for(i=0;i<5;i++) printf("%5d",a[i]); 18 return 0; 19 } 20 21 void sort(int **a,int n) //没有直接对数组进行排序,而是改变了指针数组和数组之间的mapping 22 { 23 for(int i=0;i<n-1;i++) 24 { 25 int min=i; 26 for(int j=i+1;j<n;j++) 27 { 28 if(**(a+min)>**(a+j)) 29 { 30 min=j; 31 } 32 } 33 if(min!=i) 34 { 35 int *temp=*(a+i); 36 *(a+i)=*(a+min); 37 *(a+min)=temp; 38 } 39 } 40 } 41 42 void print(int **a,int n) 43 { 44 for(int i=0;i<n;i++) 45 printf("%5d",**(a+i)); 46 printf("\n"); 47 }
运行结果:
标签:turn idt 二重指针 alt 结果 class col int mic
原文地址:https://www.cnblogs.com/bboykaku/p/12493679.html