Advertisement
framp

Pointer arithmetic

Feb 4th, 2012
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. type X [10][5][10];
  2. d = { "bool": 1, "char": 1, "int": 4, "float": 4, "double": 8 };
  3.     X:
  4.         T=type(*)[5][10],
  5.         sizeof(T) = 5*10,
  6.         I
  7.     X+k (X[k]):
  8.         T=type(*)[5][10],
  9.         sizeof(T) = 5*10*d[type],
  10.         I+k(5*10)*d[type]
  11.     *(X+k)+j (X[k][j]):
  12.         T=type(*)[10],
  13.         sizeof(T) = 10*d[type],
  14.         I+k(5*10)*d[type]+j(10)*d[type]
  15.     *(*(X+k)+j)+i (X[k][j][i]):
  16.         T=type(*),
  17.         sizeof(T) = d[type],
  18.         I+k(5*10)*d[type]+j(10)*d[type]+i*d[type]
  19.  
  20. int ex_1(){
  21.     char X[10][5][10];
  22.     cout << (int) X << " " << typeid(X).name() << " char (*)[5][10]\n";
  23.     cout << (int) (*(*X-4)+2) << " == " << (((int) X)-4*10*1+2*1)
  24.          <<  " " << typeid((*(*X-4)+2)).name() << "  char (*)\n";
  25.     cout << (int) X[-1] << " == " << (((int) X)-1*5*10*1)
  26.          <<  " " << typeid(X[-1]).name() << " char (*)[10]\n";
  27.     // both are undefined
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement