早上参加了***科技的笔试;

题目大概涉及了:

进程和线程的区别;栈和堆分配方式的区别;进程间通信的方式;全局变量和全局静态变量的区别

int (*x)() int *x() int (*x[])()
assert函数的作用;const与宏的区别;栈和堆分配方式的区别;#include"xxoo.h"与#include的区别

typedef union {long i; int k[5]; char c;} DATE; struct data { int cat; DATE cow; double dog;} too;
DATE max;
则语句 printf("%d",sizeof(struct date)+sizeof(max));的执行结果是
unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000;
p2=(unsigned long *)0x810000;

请问p1+5= ;
p2+5= ;
求过程

后面的代码填空做错了

 

   
   
   
   
  1. #include  
  2. #include  
  3. #include  
  4. #include  
  5.  
  6. typedef unsigned int u32; 
  7.  
  8. static void u32_swap(void *a, void *b, int size) 
  9.     u32 t = *(u32 *)a; 
  10.     *(u32 *)a = *(u32 *)b; 
  11.     *(u32 *)b = t; 
  12.  
  13. static void generic_swap(void *a, void *b, int size) 
  14.     char t; 
  15.  
  16.     do { 
  17.         t = *(char *)a; 
  18.         *(char *)a++ = *(char *)b; *(char *)b++ = t; 
  19.     } while (--size > 0); 
  20.  
  21. void sort(void *base, size_t num, size_t size, 
  22.      int (*cmp)(const void *, const void *), 
  23.      void (*swap)(void *, void *, int size)) 
  24.     /* pre-scale counters for performance */ 
  25.     int i = (num/2) * size, n = num * size, c, r; 
  26.  
  27.     if (!swap) 
  28.         swap = (size == 4 ? u32_swap : generic_swap); 
  29.  
  30.     /* heapify */ 
  31.     for ( ; i >= 0; i -= size) { 
  32.         for (r = i; r * 2 < n; r = c) { 
  33.             c = r * 2; 
  34.             if (c < n - size && cmp(base + c, base + c + size) < 0) 
  35.               c += size; 
  36.             if (cmp(base + r, base + c) >= 0) 
  37.             break
  38.             swap(base + r, base + c, size); 
  39.         } 
  40.     } 
  41.  
  42.     /* sort */ 
  43.     for (i = n - size; i >= 0; i -= size) { 
  44.         swap(base, base + i, size); 
  45.         for (r = 0; r * 2 < i; r = c) { 
  46.             c = r * 2; 
  47.             if (c < i - size && cmp(base + c, base + c + size) < 0) 
  48.                c += size; 
  49.             if (cmp(base + r, base + c) >= 0) 
  50.                break
  51.             swap(base + r, base + c, size); 
  52.         } 
  53.     } 
  54.  
  55. int cmpint(const void *a, const void *b) 
  56.     return *(int *)a - *(int *)b; 
  57.  
  58. void printarray(int *array, int size) 
  59.     int i; 
  60.  
  61.     printf ("-----------start print array size=%d\n", size); 
  62.  
  63.     for (i = 0; i < size; i++) 
  64.     { 
  65.         printf ("%d ", array[i]); 
  66.     } 
  67.     printf ("\n"); 
  68.  
  69. int main() 
  70.     int i; 
  71.     int *a; 
  72.     int size = 10; 
  73.  
  74.     a = (int *) malloc(size * sizeof(int)); 
  75.     if(a == NULL) 
  76.     { 
  77.         printf ("malloc\n"); 
  78.         return 0; 
  79.     } 
  80.     memset(a, 0, sizeof(int) * size ); 
  81.  
  82.     srand(time(NULL)); 
  83.  
  84.     for (i = 0; i < size; i++) 
  85.     { 
  86.         a[i] = rand() % 6599; 
  87.     } 
  88.  
  89.     printf ("before sort\n"); 
  90.     printarray(a, size); 
  91.  
  92.     sort(a, size, sizeof(int), cmpint, NULL); 
  93.  
  94.     printf ("after sort\n"); 
  95.     printarray(a, size); 
  96.  
  97.     for (i = 0; i < size-1; i++) 
  98.         if (a[i] > a[i+1]) { 
  99.             printf ("sort() failed!\n"); 
  100.             printf ("a[%d]=%d > a[%d]=%d\n", i, a[i], i+1, a[i+1]); 
  101.             break
  102.         } 
  103.  
  104.     free(a); 
  105.  
  106.     return 0;