Прямым ответом было бы изменить сеть учебного симулятора Veins 4.7.1 , добавив узел Tic
и узел Toc
. Я предполагаю, однако, что это не то, что вы имели в виду. Возможно, вы захотите изменить симуляцию учебника вен для использования вашего my_config_file.sumocfg
вместо своего собственного erlangen.sumo.cfg
файла .
Файл, который сконфигурирован как симулятор дорожного движения в omnetpp.ini , называется erlangen.launchd.xml
. Изменяя этот файл (или настраивая симуляцию для использования другого), вы можете изменить, какой сценарий SUMO имитируется при запуске примера Veins.
Вам нужно передать указатель на указатель, если вы хотите это сделать.
void barPush(BarList ** list,Bar * bar)
{
if (list == NULL) return; // need to pass in the pointer to your pointer to your list.
// if there is no move to add, then we are done
if (bar == NULL) return;
// allocate space for the new node
BarList * newNode = malloc(sizeof(BarList));
// assign the right values
newNode->val = bar;
newNode->nextBar = *list;
// and set the contents of the pointer to the pointer to the head of the list
// (ie: the pointer the the head of the list) to the new node.
*list = newNode;
}
Затем используйте это следующим образом:
BarList * l;
l = EMPTY_LIST;
barPush(&l,&b1); // b1 and b2 are just Bar's
barPush(&l,&b2);
Джонатан Леффлер предложил вернуть нового заголовка списка в комментариях:
BarList *barPush(BarList *list,Bar *bar)
{
// if there is no move to add, then we are done - return unmodified list.
if (bar == NULL) return list;
// allocate space for the new node
BarList * newNode = malloc(sizeof(BarList));
// assign the right values
newNode->val = bar;
newNode->nextBar = list;
// return the new head of the list.
return newNode;
}
Использование становится:
BarList * l;
l = EMPTY_LIST;
l = barPush(l,&b1); // b1 and b2 are just Bar's
l = barPush(l,&b2);
Помните, что в C ВСЕ передается по значению.
Вы передаете указатель на указатель, как this
int myFunction(int** param1, int** param2) {
// now I can change the ACTUAL pointer - kind of like passing a pointer by reference
}
Да, вы должны передать указатель на указатель. C передает аргументы по значению, а не по ссылке.
Это классическая проблема. Либо верните выделенный узел, либо используйте указатель указателя. В C вы должны передать указатель на X в функцию, где вы хотите, чтобы ваш X был изменен. В этом случае, так как вы хотите изменить указатель, вы должны передать указатель на указатель.
Общий ответ: передайте указатель на то, что вы хотите изменить.
В этом случае это будет указатель на указатель, который вы хотите изменить.