初版 2026/01/31
改訂


array1.c

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

uint8_t array8[] = {10, 50, 100, 200};
uint16_t array16[] = {1000, 5000, 10000, 20000};

void main() {

    // 配列の要素数はゼロから始まる
    // printfの書式:
    //   符号あり:%d
    //   符号なし:%u
    printf("value:\n");

    for (uint8_t i = 0; i < 4; i++) {
        printf("array8[%u] : %u\n", i, array8[i]);
    }

    for (uint8_t i = 0; i < 4; i++) {
        printf("array16[%u]: %u\n", i, array16[i]);
    }

    return;
}
  • 配列は、連続したアドレスにデータを配置し、アクセスする仕組みに過ぎない。
  • 定義する際は、要素数を指定する必要はない。
  • 配列データへのアクセスは、配列名の先頭アドレス+要素番号に該当するアドレス(配列の型により変動)に対して行われる。このとき、最大要素数以上の要素番号を指定してもエラーとはならないため、要素数の管理には注意すること。


コンパイル

compile.sh

#!/bin/sh
zcc +msx -lmsxbios --list -subtype=msxdos $1.c -o $1.com


$ ./compile.sh ./array1


実行結果

2026-01-31-z88dk-c-array1_01.png

※MSXDOS.SYSとCOMMAND.COM、コンパイルして作成した.COMを配置したディレクトリをopenMSXでマウント、MSXDOSから実行