SAK 図書館
パソコン基礎知識 C 言語編 (その五) 配列、ポインタ、構造体
■配列 ・配列変数は次のように宣言する。 int a[10]; char b[11]; ** a[10]; は、a[0] ... a[9] の 10 個の配列となる。VB と違うので注意!! ** char b[11]; は、11 個の文字を格納することができるが、一般的には文字 列格納するのに使用される。文字列の最後には NULL コードが必要なので、 実際には、11 個の配列に 10 個の文字しか格納できない。 ■ポインタ ・ポインタはメモリアドレスと似ているが、少し操作が違う。 配列を参照する場合、添字を使用するよりポインタを使用する方がコードが 高速になるのが一般的である。 ・p++ は、ポインタがインクリメントされ、その変数タイプの次の記憶領域に 位置付けされる。アセンブラのメモリアクセスとは少し違う。 int *p; ■構造体 ・構造体はいくつかの記憶タイプをまとめて、レコードのように扱う。 (ユーザ定義型) typedef struct { char cmd[21]; char para[201]; } LIN; ■サンプルコード /* ======================================================================== 配列、ポインタ、構造体テスト ======================================================================== proj0004.c version 1.00 Copyright(C) 2001 Y.SAK */ // インクルードヘッダ #include <stdio.h> #include <string.h> // 定数 #define REC_MAX 10 // 構造体 typedef struct { int cmd; char para[20]; } REC; // 関数プロトタイプ宣言 int main(void); /* ======================================================================== メイン ======================================================================== */ int main(void) { REC a[REC_MAX]; int i; REC *p; // 添字による配列アクセス for(i = 0; i < REC_MAX; i++) { a[i].cmd = i; strcpy(a[i].para, "あいうえお"); } printf("-- 添字による配列アクセス --\n"); for(i = 0; i < REC_MAX; i++) { printf("%d - %s\n", a[i].cmd, a[i].para); } // ポインタによる配列アクセス for(i = 0, p = &a; i < REC_MAX; i++, p++) { p->cmd = i; strcpy(p->para, "あいうえお"); } printf("-- ポインタによる配列アクセス --\n"); for(i = 0, p = &a; i < REC_MAX; i++, p++) { printf("%d - %s\n", p->cmd, p->para); } return(0); } ■パソコン基礎知識 C 言語編資料
■プログラミング言語資料
■パソコン基礎知識 ハード編資料
■パソコン基礎知識 画像編資料
■パソコン基礎知識 Windows 編資料
■コンピュータシステム導入編資料