what is separate-array-of-pointers technique? when and where can it be used? here I will explain it. separate-array-of-pointers is a array of pointers each of which points at one element of another array.when we sort a array whose elements may be a large structure,it may be useful. As the array is sorted ,it will spend much time. Beause a lot of data will be copied back and forth.we can exploite separate-array-of-pointers technique.
/**//* * demonstrate the use of separate-array-of-pointers technique. * */ #include <stdio.h> #include <stdlib.h> struct employee{ char name[20]; long emp_id; }; int emp_pointer_name_compare(constvoid*e1p,constvoid*e2p) { const struct employee **e1,**e2; e1=(const struct employee**) (e1p); //it is hard to understand? e2=(const struct employee**) (e2p); return strcmp((*e1)->name,(*e2)->name); } /**//* int emp_name_compare(const void *e1p,const void * e2p) { const struct employee *e1,*e2; e1=(const struct employee* ) (e1p); //it is hard to understand? e2=(const struct employee* ) (e2p); return strcmp(e1->name,e2->name); }*/ int main() { struct employee employees[10]; struct employee *pemployees[10]; char buf[BUFSIZ]; int i,nep; for(nep=0;nep<3&&fgets(buf,BUFSIZ,stdin)!=NULL;nep++) { sscanf(buf,"%s %ld/n",&employees[nep].name, &employees[nep].emp_id); pemployees[nep]=&employees[nep]; } qsort(pemployees,nep,sizeof(struct employee *),emp_pointer_name_compare); /**//*qsort(employees,nep,sizeof(struct employee),emp__name_compare);*/ printf("Sorted by name:"); for(i=0;i<nep;i++) { printf("%s %ld /n",pemployees[i]->name,pemployees[i]->emp_id); } scanf("%d",&i); return0; }
what is separate-array-of-pointers technique? when and where can it be used?here I will explain it.separate-array-of-pointers is a array of pointers each of which points at one element of another arra