[2340] Re:関数の戻り値について
投稿者:(ぱ)こと管理人
2023/08/05 14:19:52
>C言語では、「配列へのポインタ」は関数の戻り値にはできないのでしょうか?
>VisualC++でやってみたのですが、無理でした。
できない理由は特にないので、普通にできます。以下、掛け算九九の表をmalloc()で
確保するプログラムです(これは「普通」には見えない、というならまあもっともですが)。
#include <stdio.h>
#include <stdlib.h>
int (*alloc99(void))[9]
{
return malloc(sizeof(int) * 81);
}
int main(void)
{
int (*array99)[9];
int i, j;
array99 = alloc99();
for (i = 1; i < 10; i++) {
for (j = 1; j < 10; j++) {
array99[i - 1][j - 1] = i * j;
}
}
for (i = 1; i < 10; i++) {
for (j = 1; j < 10; j++) {
printf("\t%d", array99[i - 1][j - 1]);
}
printf("\n");
}
}
ただ、
>"func()[0].hoge"みたいなことがやってみたかったのですが、C言語では無理なのでしょうか。
上記のやってみたいことからすると、そもそもやりたいことは「配列へのポインタ」を
返すことではないようにも思えます。"func()[0].hoge"と書きたいのなら、やりたいことは、
「構造体へのポインタ」を返すことではないでしょうか。