初版 2026/02/04
改訂


array3.c

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

uint8_t array[2][10] = {
    {  10,  20,  30,  40,  50,  60,  70,  80,  90, 100},
    { 110, 120, 130, 140, 150, 160, 170, 180, 190, 200}};

void print_array(uint8_t x, uint8_t y) {
    // 2次元配列へ2要素でアクセスは、[行の要素数][列の要素数]になることに注意
    printf("array[%d, %d] value = %d\n", y, x, array[y][x]);
    printf("array[%d, %d] addr  = %p\n", y, x, &array[y][x]);
}

void main() {
    print_array(2, 0);
    print_array(3, 0);
    print_array(4, 0);
    print_array(5, 1);
    print_array(6, 1);
    print_array(7, 1);

    return;
}
  • 2次元配列は行優先でメモリ上に配置される。


コンパイル

compile.sh

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


$ ./compile.sh ./array3


実行結果

2026-02-04-z88dk-c-array3_01.png

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