C言語 ポインタ変数について
ポインタ変数の値とアドレスの表示の仕方がよくわからないため、教えていただけますでしょうか。
---------------------------------------------------------------------
#include <stdio.h>
int main() {
char* animal[] = {"dog", "cat", "hamster", "mouse"};
int i;
for(i=0; i<4; i++) {
printf("%p animal[%d] : %s, アドレス : %p\n",
animal+i, i, animal[i], *(animal+i));
}
return 0;
}
---------------------------------------------------------------------
このプログラムを実行すると
0022FF40 animal[0] : dog, アドレス : 00403000
0022FF44 animal[1] : cat, アドレス : 00403004
0022FF48 animal[2] : hamster, アドレス : 00403008
0022FF4C animal[3] : mouse, アドレス : 00403010
となるのですが、なぜanimal[i]のところに配列の要素(dog, cat,・・・)が表示されるのかがわかりません。
char* animal[] = {"dog", "cat", "hamster", "mouse"};の行では、
animal[0] = "dog" なら animal[0]には"dog"の先頭アドレス(00403000)が代入されているのではないのでしょうか。