在char *
指針上使用此技術對我有用。 (這裏不顯示,因爲它沒有錯誤)。但是,我將指針傳遞給test_variadic
函數的指針。帶有int指針的可變參數列表,不按預期方式工作
與gcc -Wall -Wextra -Werror -Wpadded -std=c99 test.c -o test
我嘗試用va_arg(args, int**)
提取它編譯,然後我會去參考指針值分配給它,我得到這個錯誤:
test.c: In function ‘test_variadic’:
test.c:14:6: error: assignment makes pointer from integer without a cast [-Werror]
*aa = b++;
^
cc1: all warnings being treated as errors
#include <stdio.h>
#include <stddef.h>
#include <stdarg.h>
static int test_variadic(size_t length, ...)
{
int** aa;
int b = 4;
va_list args;
va_start(args, length);
for(size_t i = 0; i < length; i++) {
aa = va_arg(args, int**);
*aa = b++;
}
va_end(args);
return 0;
}
int main()
{
int* a, *b;
if(test_variadic(2, &a, &b) == 0) {
printf("%d %d\n", *a, *b);
}
return 0;
}
所以基本上我想要做的是將函數指針傳遞給變量(在本例中爲int
s),然後我想將這些指針分配給一個值(來自函數test_v*
。我希望能夠通過指向t的指針他的功能,然後分配一個值的指針。我希望能夠分配一個不是指針的值,以便我可以在main中訪問它。
解引用一個int **會給你一個int *,而b是一個int(在函數內部)。看起來像你應該使用int *參數,將main的a和b轉換爲int而不是int *的 – rici 2015-04-02 02:55:27
建議:在'test_variadic'中使用不同的變量名稱而不是'main',所以當我們回答你的問題時,我們可以說'a'而不是'主要的a'與'test_variadic的a'(這是不同的變量) – 2015-04-02 03:00:43