int main(void) {
char array[2][3] = { "ab", "cd" };
printf("&array → [%p] \n", &array);
printf("&array+1 → [%p]\n", &array+1);
printf("&*array → [%p] \n", &*array);
printf("&*array+1 → [%p]\n", &*array+1);
printf("&**array → [%p] \n", &**array);
printf("&**array+1 → [%p]\n", &**array+1);
return 0;
}
&array → [0x7fff5fbff720]
&array+1 → [0x7fff5fbff726]
&*array → [0x7fff5fbff720]
&*array+1 → [0x7fff5fbff723]
&**array → [0x7fff5fbff720]
&**array+1 → [0x7fff5fbff721]
実行結果から
&array 配列(array[2][3])の最初の要素(a)へのポインタ 型:配列(array[2][3])へのポインタ
&*array 配列((*array)[3])の最初の要素(a)へのポインタ 型:配列((*array)[3])へのポインタ
&**array ポインタへのポインタが指す要素(a)のアドレス 型:ポインタへのポインタが指す要素(char)
&two_array+1 charの配列(要素数2)の配列(要素数3)を指しているので6加算
&*two_array+1 charの配列(要素数3)を指しているので3加算
&**two_array+1 charを指しているので1加算
と考えました。
上記の考え方で間違っているところはありますか?
ご回答よろしくお願い致します。