У меня есть программа на C, которая берет массив как входной, который будет сохраняться как 3 разных массива. Например:Печатать структуру, которая была передана как аргумент в функции
0 2 0
1 0 0
0 0 3
будет сохранен как Elemenets = [2,1,3]
и координата значений coresponding, Rows = [1,2,3] Columns = [2,1,3]
в структурах я создаю.
вход выглядит следующим образом:
Во-первых я дать размеры массива, то число ненулевых значений в массиве, то значения с их координатами.
После ввода ввода я пытаюсь напечатать массив с помощью function print2d(struct arrayCollection the array)
, но массив структуры, похоже, имеет неправильные номера внутри (адреса памяти?). Я думаю, что я делаю что-то неправильно со структурой, когда передаю ее как аргумент функции, но я не могу найти проблему. Я также попытался передать структуру по ссылке как указатель, но у меня были те же результаты.
Вот мой program
Мой язь Xcode и компилятор яблочно LLVM компилятор 4,1
Я думаю, что получаю то, что вы говорите, но когда я пытаюсь напечатать массив значений внутри main, когда возвращается структура, он работает (просто говоря). Не могли бы вы показать мне пример или источник того, что вы имеете в виду во второй части вашего ответа? (Знание C не так: /) – ozmax
@ozmax: «неопределенное поведение» означает, что иногда это может сработать, но вы не можете рассчитывать на него. –
@ozmax: Вы можете найти более подробную информацию здесь: http://en.wikipedia.org/wiki/C_dynamic_memory_allocation –