Эквивалентное значение указателя меняет ссылку на указатель

0
struct node
{
    char *ptr = (char *)malloc(frames*sizeof(char));
}*start,*current;

Затем я выделил память, равную node для запуска.

[...]//Assigned values to start node.
current = start;//Current points to start
node *temp = new node();//temp will point a newly created node
*temp = *current;//    COPYING VALUES OF CURRENT TO TEMP
[...]

Я хочу создать новый узел, создать temp точку и скопировать значения current (здесь ток указывает на начало) на temp.

НО это делает температура точки current (здесь start) вместо этого. Разочарование. Где я иду не так?

  • 2
    Какой это язык? Это конечно не C ...
  • 0
    Делать в C ++, но я не вижу причин, по которым он не запускается в C ++
Показать ещё 2 комментария
Теги:
pointers
struct
nodes

2 ответа

0
Лучший ответ

Могут быть два решения

  1. Изменить * temp = * current to temp = current. При этом вы можете получить доступ к значениям "current", используя "temp", поскольку эти два указателя теперь относятся к одному и тому же месту памяти. Внимание, изменение значения с помощью "current" или "temp" приведет к изменению значения в обоих указателях, поскольку они относятся к тому же месту в памяти.
  2. Используйте memcpy. Он скопирует значения из одной ячейки памяти в другую. Вот ссылка. Теперь у вас есть две независимые копии значений.
  • 0
    Что-то, что я искал.
2

*temp = *current должен быть temp = current.

  • 0
    это сделает temp точку current не так ли? Я хочу добавить свои вейлы
  • 0
    Скорее, это создаст temp точку, на которую указывает current . Виноват

Ещё вопросы

Сообщество Overcoder
Наверх
Меню