2016-06-20 2 views
-1

Im боролся с функцией void в C++. Предполагается, что функция void принимает два массива в качестве аргументов, делая некоторые операции над ними и возвращая их как измененные. Однако при вызове в программе массив, который я установил как вход, не изменился.Функция void в C++ не читается

Функция использует алгоритм собственных значений Якоби, поэтому исходные матрицы D и VV должны быть возвращены по диагонали, будучи «dim» размерностью.

jacobi (dim, VV, D);

При записи этой строки в основной функции оба D и VV не изменились. Как D, так и VV определяются как динамические массивы (указатели на указатели), действительно ли это имеет какой-либо эффект? Должна ли команда выше возвращать новые D и VV? При создании «cout» внутри функции void как D, так и VV, похоже, меняются под действием, но не при вызове из основной функции! Благодаря!

+7

Вам действительно нужно показать свой код, а не пытаться его описать. –

+4

Можете ли вы разместить код? – duncan

+4

Показать свой код. Вероятно, вы должны вернуть значение или передать аргументы по ссылке. Используйте подлинный стиль C++: интеллектуальные указатели, контейнеры и т. Д. –

ответ

2

Вы, очевидно, назначаете параметры чему-то еще в функции.

Передайте параметры функции по ссылке.

т.е. изменить функцию jacobi(A dim, B VV, C D), где А, В, и С являются текущими конкретными типами для

jacobi(A& dim, B& VV, C& D)

& обозначает ссылку.

+0

Простите, ребята, но, наконец, я смог решить это, просто указав указатели внутри функции и вернув их! В любом случае, спасибо за ответы – user2261553

Смежные вопросы