我想通過void函數的引用返回一個動態數組。 我已經搜索了3個小時的答案,找不到任何有用的東西。 這裏是我的簡化代碼:如何從c中的void函數返回動態數組?
main()
{
int **a;
xxx(&a);
printf("%d\n\n", a[1]);
}
void xxx(int **a)
{
int i;
*a = (int*)malloc(5 * 4);
for (i = 0; i < 5; i++)
a[i] = i;
printf("%d\n\n", a[1]);
}
我只是想在「XXX」功能分配動態數組,並參考其返回到主,不是我想要打印或使用別的東西。感謝提前:)
編輯
#include <stdio.h>
#include <stdlib.h>
#define MACROs
#define _CRT_SECURE_NO_WARNINGS
void xxx(int **a);
int main(void)
{
int *a;
xxx(&a);
printf("%d\n\n", a[1]);
}
void xxx(int **a)
{
int i;
*a = malloc(5 * sizeof(**a));
for (i = 0; i < 5; i++)
a[i] = i;
printf("%d\n\n", a[1]);
}
[請參閱此討論關於爲什麼不在'C'中投射'malloc()'和家族的返回值。](http://stackoverflow.com/q/605845/2173917)。 –
你已經很近了,但代碼仍然有很多*錯誤的東西。你應該真的聽你的編譯器,因爲它會向你大喊警告。如果不是,那麼你需要調高警戒級別(無論如何你應該這樣做)。 –
請勿使用「幻數」。或者'#define'(對於數組長度來說),或者使用'sizeof'(對於標準或更復雜的用戶定義類型)。 –