22

Cで匿名のアドホックアレイを作成することは可能ですか?

たとえばprocessArray(int[] array)、int配列を引数として取るという関数が呼び出されたとすると、次の方法で匿名配列を渡すことができます。

int main(){
 processArray( (int[]){0, 1, 2, 3} ); //can I create this type of array?
 return 0;
}

または、以前に(ポインターを使用して)配列を宣言してから、そのポインターをprocessArray()に渡す必要がありますか?例えば:

int main(){
 int[] myArray = {0, 1, 2, 3};
 processArray(myArray);
 return 0;
}
4

1 に答える 1

30

C99とC11を使用すると、次のコードに示すように、自分が書いたものを書くことができます。これらは「複合リテラル」であり、ISO / IEC 9899:2011§6.5.2.5複合リテラルで説明されています(ISO / IEC 9899:1999の同じセクションです)。

#include <stdio.h>

static void processArray(int n, int arr[])
{
    for (int i = 0; i < n; i++)
       printf(" %d", arr[i]);
    putchar('\n');
}

int main(void)
{
    processArray(4, (int[]){0, 1, 2, 3});
    return 0;
}

実行すると、答えが生成されます。

 0 1 2 3
于 2013-02-03T04:16:44.663 に答える