![]() |
![]() |
TOP > C言語 > ポインタの使い方 |
![]() |
![]() |
ポインタをインクリメントすると?
ポインタをインクリメントすると、そのポインタのサイズ分移動する。例えば、char型のポインタをインクリメントすると(ポインタに1を足す)、1バイトアドレスが移動する。
ポインタは所詮アドレスを格納するデータ型なので、大雑把に言えば好きな箇所のデータを取得する事ができる。
ポインタのインクリメントの例
#include <stdio.h> //int型のサイズ×4個分の構造体 struct _int_t { int a; int b; int c; int d; }; int main(int argc, char** argv) { int i; int* p_int; char* moji = "abcdefghijklmnopqrstuvwxyz"; char* p; struct _int_t s_data[2]; struct _int_t *p_data; //初期化 s_data[0].a = 1; s_data[0].b = 2; s_data[0].c = 3; s_data[0].d = 4; s_data[1].a = 5; s_data[1].b = 6; s_data[1].c = 7; s_data[1].d = 8; p_data = &s_data[0]; //char型のポインタの先頭アドレスをインクリメントしてみる p = moji; printf("-------pのアドレスとデータは-------\n"); while (*p != '\0') printf("Addr= %p, data=%c\n", p, *p++); printf ("\n"); //構造体p_dataをインクリメントして、aの値を表示する printf("-------構造体のデータは-------\n"); for (i = 0; i < 2; i++) { printf("data = %d\n", p_data->a); printf("data = %d\n", p_data->b); printf("data = %d\n", p_data->c); printf("data = %d\n", p_data->d); p_data++; } printf("\n"); //構造体の先頭のアドレスをint型のポインタに代入してインクリメントする p_int = (int*)&s_data[0]; printf("-------p_intのデータは-------\n"); for (i = 0; i < 8; i++) { //int型のバイト数分8回移動するので、構造体s_dataの全情報が取得できる printf ("data = %d\n", *p_int++); } return(0); } -------pのアドレスとデータは------- Addr= 00421034, data=a Addr= 00421035, data=b Addr= 00421036, data=c Addr= 00421037, data=d Addr= 00421038, data=e Addr= 00421039, data=f Addr= 0042103A, data=g Addr= 0042103B, data=h Addr= 0042103C, data=i Addr= 0042103D, data=j Addr= 0042103E, data=k Addr= 0042103F, data=l Addr= 00421040, data=m Addr= 00421041, data=n Addr= 00421042, data=o Addr= 00421043, data=p Addr= 00421044, data=q Addr= 00421045, data=r Addr= 00421046, data=s Addr= 00421047, data=t Addr= 00421048, data=u Addr= 00421049, data=v Addr= 0042104A, data=w Addr= 0042104B, data=x Addr= 0042104C, data=y Addr= 0042104D, data=z -------構造体のデータは------- data = 1 data = 2 data = 3 data = 4 data = 5 data = 6 data = 7 data = 8 -------p_intのデータは------- data = 1 data = 2 data = 3 data = 4 data = 5 data = 6 data = 7 data = 8 |
![]() |
![]() |
Copyright 2007 ためになるホームページ All Rights Reserved. |