Struct в C, целое число от ошибки указателя [duplicate]

Оба обхода графика обещают одно: полный обход графа, посещение каждой вершины на графике. Если у вас нет ограничений памяти, DFS - хороший выбор, так как BFS занимает много места. Таким образом, выбор между этими двумя зависит от вашего требования.

Хотите найти (сильно /) связанные компоненты графика? или решить лабиринт или судоку? Используйте DFS. Если вы внимательно присмотритесь, предварительный заказ, пост-порядок и порядок ввода - все варианты DFS. Итак, да, это интересные приложения.

BFS, если вы хотите проверить, является ли граф двудольным, найдите кратчайший путь между двумя узлами или приложениями, требующими таких задач.

9
задан hardpenguin 28 August 2012 в 14:23
поделиться

2 ответа

Первая - инициализация , а вторая - назначение . Поскольку массивы не являются изменяемыми значениями в C, вы не можете назначать им новые значения.

Помните, вы можете изменить содержимое массива, вы просто не можете сказать fast_car = .... Таким образом, содержимые модифицируемые, массивы сами по себе не являются.

<ч>

Используя тот же символ = для этих самых различных концепций дискуссионных стоимостей.

10
ответ дан cnicutar 15 August 2018 в 16:19
поделиться
  • 1
    str_replace("modifiable", "mutable");;) – Nick Brunt 28 August 2012 в 14:25
  • 2
    @Nick: замена строк на самом деле не так проста в C;) – Niklas B. 28 August 2012 в 14:26
  • 3
    @cnicutar, можете ли вы предложить другое решение? Речь идет о том, чтобы вручную назначить несколько переменных массива из структуры. Использование указателя на char работает, но разве это не плохое решение для управления памятью? – hardpenguin 28 August 2012 в 14:28
  • 4
    Кроме того, причина, по которой инициализация может установить массив на целую строку и присвоение, не может заключаться в том, что инициализация выполняется путем хранения исполняемого файла данных, где он «естественно» формирует часть памяти программы при загрузке. Он не вызывает никаких операций во время выполнения, не загружая программу. Напротив, для назначения требуется операция копирования, и это более сложный процесс, чем изначально предназначенный для C. – Eric Postpischil 28 August 2012 в 14:29
  • 5
    @hardpenguin Вы можете использовать strcpy, использовать указатели и т. д. Зависит от характера данных и обрабатываемой обработки. – cnicutar 28 August 2012 в 14:30
char fast_car[15]="Bugatti";

Он говорит, что fast_car является массивом и инициализируется строкой «Buratti». Правильное использование:

char fast_car[15];
fast_car="Bugatti";

Первая строка - это объявление массива char (не инициализировано). Во-вторых, fast_car здесь - всего лишь адрес (указатель) первого элемента в этом массиве char. Назначение указателя fast_car массиву char «Buratti» неверно по разностному типу значения.

4
ответ дан Utsav T 15 August 2018 в 16:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: