void print(char*array,int num) { int i; for(i = 0; i < num; i++) printf("%c ", array[i]); printf("\n"); }
void process(char*array,int cur,int num,char*p,char*q) { int i; int b = 1 <<(num - 1); int pi = 0; int qi = 0; for(i = 0; i < num; i++){ if(cur & b) p[pi++]= array[i]; else q[qi++]= array[i]; b >>= 1; }
printf("Values in P: "); print(p, pi); printf("Values in Q: "); print(q, qi); printf("\n"); }
voidpartition(char*array,int num) { int i; int last =(int)pow(2, num); char*p =(char*)malloc(sizeof(char)* num); char*q =(char*)malloc(sizeof(char)* num);
for(i = 1; i < last - 1; i++){ process(array, i, num, p, q); }
printf("Total = %d\n", last - 2);
free(p); free(q); }
int main() { char array[]="ABC"; partition(array, 3); return 0; }
常量指针与指针常量直接从语义上理解,看const限定那个范围。const int *p 其中的const在*p之前,也就是说*p是常量,不能改变。同样int *const p 其中的const在p之前,所以p是常量,不能改变。位段的符号structtest{inta:2;/*表示范围-2~1 */unsignedintb:2;/*表示范围0-3 */};intmai...