ポインタのポインタ

何度も写経して体で覚えるべし。。

#include <stdio.h>
int main(void){
  char str[] = "Hoge is Hoge!!";
  char *p;
  char *(*pp);
  p = str;
  pp = &p;

  printf("%p\n", str);   /* char型配列strの先頭アドレス */
  printf("%s\n\n", str); /* 配列strの文字列(NULL文字まで)*/

  printf("%p\n", &p);    /* char型ポインタp自身のアドレス*/
  printf("%p\n", p);     /* char型ポインタpの指し示すアドレス*/
  printf("%s\n\n", p);   /* char型ポインタpの指し示すアドレスから始まる文字列(NULL文字まで)*/

  printf("%p\n", &(pp)); /* char型ポインタのポインタpp自身のアドレス*/
  printf("%p\n", pp);    /* char型ポインタのポインタppに代入されたアドレス*/
  printf("%p\n", *pp);   /* char型ポインタのポインタppの指し示すアドレス*/
  printf("%s\n\n", *pp);

  return 0;
}
#include <stdio.h>

int main(void){
  int a, *p, **myp;
  p = &a;
  myp =	&p;
  *(*myp) = 100;
  printf("%d %p\n", *(*myp), *myp);
  printf("%d %p\n", *p, p);
  printf("%d %p\n", a, &a);
  return 0;
}