могу никак до конца в этом разобраться:
есть у меня функа
foo(char *in);
есть у меня в main указатель. например
char *ptr;
вызываю я из main функу. передаю в неё указатель. например
foo(ptr);
далее, в нутри функи че-то делаю и создаю чанк с массивом чаров. присваиваю указателю, который передал в функцию, правильно? например
in = malloc();
потом с даннымми в чанке опять что-то делаю и хочу вернуть всё это обратно в main()
и на этом моменте я уже начинаю путаться.
можете мне, пожалуйста, обьяснить как сделать так, что бы на куче не создавалось дополнительных чанков не нужных.
а был просто в main у указатель. и вся работа производилась с чанком который присвоен за этим указателем.
я думал может быть так?
foo(char **in);
и из main уже вызывать
foo(&ptr);
foo(char* in) main { char* in = new char[15]; foo(in); } в данном случае у тебя 2 разных поинтера которые указывают на одну и ту же область в памяти. (1 на стеке мейна, 1 на стеке foo) Чтобы в foo изменить поинтер который на стеке ф-и main нужно передавать в foo либо указатель на этот указатель (си), либо этот указатель по ссылке (с++) Т.е. foo(char*& in) or foo(char** in) Ну и вызовы соответсвенно будут foo(in) or foo(&in)
Обсуждают сегодня