1

次の行があります(Cで):

char *tmp;

ここで、その変数をtmpコード内のいくつかのポインターに初期化し (以下の数行)、その後、配列に初期化する必要があります。

tmp別の変数を作成せずに、スタック上に新しく作成された配列へのポインタを割り当てる方法はありますか? したがって、代わりに:

char arr[10];
tmp = arr;

私はこのようなものが欲しい:

tmp = char[10];

Cでそのようなことは可能ですか?はいの場合、例を挙げていただけますか?

4

2 に答える 2

9

複合リテラル機能を使用して、次のようにすることができます。

tmp = (char[]){'a', 'b', 'c'};
于 2013-03-06T10:03:26.160 に答える
1
tmp = alloca(10);

alloca(size)現在のスタック フレームを拡大してsizeより多くのバイトを収容し、新しく割り当てられたスタック スペースへのポインタを返します。

標準の C 関数ではないと思います。それは一般的に提供されていますが、その使用は一般的に嫌われているようです.

于 2013-03-06T10:51:46.370 に答える