Example
#include <stdio.h>
struct A {
  char *b;
};
int main(int argc, char *argv[]) {
  char c[4] = { 'c', 'a', 't', '\0' };
  struct A a;
  a.b = c;
  printf("%s\n", a.b); // cat
  printf("%lu\n", sizeof c); // 4
  printf("%lu\n", sizeof a.b); // 8 ???
}
Why does sizeof a.b returns 8 and not 4? If I understood correctly, a.b returns the value that was assigned to it, which is c. But shouldn't it return the size of c (which is 4) then?
 
     
     
     
     
     
    