typedef struct {
int field;
} descriptor_t;
void function(descriptor_t (* descriptor_t)[], int descriptor_count);
descriptor_t g_descriptors[] = { {1}, {2}, {3} }; //
function(g_descriptors, sizeof(g_descriptors) / sizeof(g_descriptors[0]));
我有一个函数,它接受一个描述符数组作为参数。
当我像上面那样调用它时,我得到“不兼容的指针类型传递”警告。
我想摆脱这个警告,欢迎提出建议。
另外,我想了解为什么这个警告,什么可能会出错,如果我传递一个固定大小的数组参数的数组未指定的大小?
2条答案
按热度按时间ttygqcqt1#
宣言
第一个参数应该是 * 一个指向descriptor_t的数组的指针 *。要将数组转换为指向数组的指针,只需使用address-of运算符
&
。bqf10yzr2#
参数
descriptor_t (* descriptor_t)[]
是一个指向descriptor_t
数组的指针。像
g_descriptors
这样的表达式中的数组会自动转换为指向其第一个元素的指针(存在一些例外,传递给sizeof
是例外之一),因此您可以简单地使用指针descriptor_t* array
或数组(自动转换为参数中的指针)descriptor_t array[]
作为参数。