C言語関係掲示板

過去ログ

No.411.可変要素数の配列

[戻る] [ホームページ]
No.2853

配列について
投稿者---momo(2002/10/04 21:38:30)


こんばんは。
配列の要素数を必要最低限だけ確保したいのですが、そのような事が出来るのでしょうか?
a[5]という配列を最初に宣言して、処理に応じてa[10]になったり、a[2]になったりさせたいと考えてます。
どなたか教えてください。

No.2858

Re:配列について
投稿者---ともじ(2002/10/05 11:43:43)


こんにちは。

>配列の要素数を必要最低限だけ確保したいのですが、そのような事が出来るのでしょうか?
>a[5]という配列を最初に宣言して、処理に応じてa[10]になったり、a[2]になったりさせたいと考えてます。

Cでは配列の要素数を動的に変化させることはできませんが、malloc
reallocを使うと実現することができます。
なお、mallocで確保した領域は、配列添字演算子[ ]を使うと、そのまま
配列のように記述することができます。
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int i, *buf;
	
	buf = (int *)malloc(20 * sizeof(int));
	if(buf == NULL) {
		printf("メモリが確保できません\n");
		return (1);
	}
	for (i = 0; i < 20; i++)
		buf[i] = i;
	
	buf = (int *)realloc(buf,100 * sizeof(int));
	if(buf == NULL) {
		printf("メモリが確保できません\n");
		return (1);
	}

	for (; i < 100; i++)
		buf[i] = i*2;
	
	for (i = 0; i < 100; i++)
		printf("%3d ", buf[i]);

	free(buf);
	
	return (0);
}