У меня есть-структура:Передача массива структуры функционировать изменения размера массива
struct Thing {
int id;
}
Затем я создаю массив Thing
с:
struct Thing *a;
a = (struct Thing *) malloc(sizeof(struct Thing));
a->id = 1;
struct Thing *b;
b = (struct Thing *) malloc(sizeof(struct Thing));
b->id = 2;
struct Thing *array[] = {a,b};
проверить размер массива и равно 2. проверить размер массива по:
printf("%d",sizeof(array)/sizeof(array[0]));
у меня также есть функции, которые принимают s в массиве вещей:
void function(struct Thing *array[]) {
//do stuff
}
Тогда я прохожу в массиве функционировать:
function(array);
Внутри функции, размер массива равен 1. Может кто-то точка мне, где сделал Я ошибаюсь и почему размер массива 1 внутри функции?
, пожалуйста, прочитайте C FAQ http://www.c-faq.com/aryptr/index.html –
или [что такое разложение массива?] (Http://stackoverflow.com/q/1461432) –
@ KarthikT Я нашел решение от ZhangYuan в комментарии ниже. – drum