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 回答