配列はアドレスを保持しており、多くの点でポインタ型変数と同じように扱うことができます。
以下のコードでは、配列変数の中身を表示しています。
#include <stdio.h>
#include <string.h>
int main() {
char s[10];
strcpy(s, "Hello!");
printf("%p\n", s);
printf("%llx\n", s);
return 0;
}
出力
0x7ffc5473ed80
7ffc5473ed80
配列である s に格納されている値は、アドレスです。
また、以下のコードを実行してみてください。
#include <stdio.h>
#include <string.h>
int main() {
char s[10];
strcpy(s, "Hello!");
printf("%p\n", s);
printf("%c\n", *s);
return 0;
}
出力
0x7fff68552cc0
H
s に格納されているアドレスに格納されている値をアスタリスクをつけて表示したところ、文字列の先頭の H が出力されました。
さらに以下のコードを実行してみてください。
#include <stdio.h>
#include <string.h>
int main() {
char s[10];
strcpy(s, "Hello!");
printf("%p\n", s);
printf("%p\n", s+1);
printf("%c\n", *(s+1));
return 0;
}
0x7ffec86288e0
0x7ffec86288e1
e
ポインタと同じように、アドレスに 1 を足すと、2文字目の e が表示されました。
上記から配列はポインタと同じようにアドレスを保持しており、多くの点でポインタと同じような操作ができることがわかりました。
0件のコメント