Вопросы

Передача указателей переменных в Julia

Можно ли использовать в Юлии что-то вроде указателей или ссылок, как в C / C ++ или C #? Мне интересно, потому что будет полезно передавать тяжелые объекты как указатель / ссылку, но не как значение. Например, использование памяти указателей для хранения объекта может быть выделено один раз для всей программы, а затем указатель может быть передан через программу. Как я могу себе представить, это повысит производительность памяти и использование вычислительной мощности.

Простой код на C ++, показывающий, что я пытаюсь выполнить в Джулии:

#include <iostream> 

void some_function(int* variable){       // declare function 
    *variable += 1;                      // add a value to the variable
}

int main(){                                
    int very_big_object = 1;             // define variable
    some_function( &very_big_object );   // pass pointer of very_big_object to some_function
    std::cout << very_big_object;        // write value of very_big_object to stdout

    return 0;                            // end of the program
}

Выход:

2

Создается новый объект, его указатель затем передается в some_funciton, который изменяет этот объект, используя переданный указатель. Возврат нового значения не требуется, поскольку программа редактировала исходный объект, а не копию. После выполнения some_function значение переменной печатается, чтобы увидеть, как оно изменилось.

Читать:
Заводская функция, возвращающая объект определенного типа - как это сделать лучше

Похожие записи

Как передать аргумент при запуске исполняемого файла на вход в этом исполняемом файле?

admin

Сбой задания Jenkins из-за старого рабочего пространства TFS

admin

Окно PowerShell при запуске из пакетного файла

admin

Существуют ли какие-либо функции для возврата имени / роли вошедшего в систему пользователя на портале клиентов Acumatica?

admin

Перенаправление Trigger Stripe SCA для аутентификации

admin

как указать python == 3.6.8 для оценщика PyTorch (conda_packages недостаточно)

admin