![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
GroundZero |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.8.2009 Репутация: нет Всего: нет |
Вот задался целью передать в функцию вектор структур, или хотябы указатель на него, чтобы производить над ним разлиные операции
после всех наманипуляций (resize) в функции end_of_str_inpfile размер вектора всеравно остается равен 10и может я чего-то доконца не понимаю? Это сообщение отредактировал(а) GroundZero - 21.8.2009, 22:45 |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
передавайте по ссылке/указателю: vector<input_struct>& input_struct_of_file, Добавлено через 1 минуту и 56 секунд ну а здесь можно и по значению Это сообщение отредактировал(а) mes - 21.8.2009, 22:40 |
|||
|
||||
GroundZero |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.8.2009 Репутация: нет Всего: нет |
вот не могу понять тогда разницу
void func(int * a) и void func(int & a) если функции отдают? (int * a) то проиходит передача переменной с адресом? а (int & a) самого значения адреса? или я уже сам себя запутал? |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
семантика похожа, в обоих мы хотим передать объект в фуннкцию, а не копию, но указатель может быть нулевым, а ссылка нет - то есть при использования ссылки не нужно беспокоиться внутри функции о валидности переданного адреса, но нельзя будет передать NULL. |
|||
|
||||
GroundZero |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.8.2009 Репутация: нет Всего: нет |
а в самом вызове функции получается что мы ссылку передаем (input_struct_of_file)?
end_of_str_inpfile(input_struct_of_file, &string_counter); почему тогда input_struct_of_file без &??? если считать что при объявлении vector<input_struct> input_struct_of_file(10); input_struct_of_file-является ссылкой на первый элемент то при передаче структуры в функцию(то есть ссылки) почему не работает void end_of_str_inpfile(vector<input_struct> *input_struct_of_file, int *string_counter) он же ждет тут указатель на вектор |
|||
|
||||
mes |
|
||||||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Посмотрите внимательно в примерах выше и сравните с тем что написали.
это Вы грубо говоря по аналогии с массивом ? Нет, vector "ведет себя" как обычная переменная.
будет работать, но надо передавать тогда не вектор, а указатель на вектор.
то же самое для ссылки :
Это сообщение отредактировал(а) mes - 22.8.2009, 11:06 |
||||||||||
|
|||||||||||
GroundZero |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.8.2009 Репутация: нет Всего: нет |
Спасибо большое...
|
|||
|
||||
GroundZero |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.8.2009 Репутация: нет Всего: нет |
Люди подсказали и решил сделать подругому
тока при компиляции получаю ошибку не могу понять как правильно обратиться в Элементу "ats" структуры |
|||
|
||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
input_struct_of_file у Вас указатель, соответсвенно Вы прежде, чем вызвать оператор[] должные указатель разименовать или обращаться к этому оператору напрямую :
в общем из за своего нежелания почитать о том, что представляет из себя ссылка и разобраться с этим, ищите себе неудобный синтаксис. вот как выглядило бы пи передаче параметров по ссылке :
Это сообщение отредактировал(а) mes - 22.8.2009, 20:24 |
||||||
|
|||||||
ller |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.8.2008 Где: г. Таганрог Репутация: 2 Всего: 4 |
Так создать себе трудностей, а потом героически их преодолеть
![]() |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
GroundZero |
|
||||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.8.2009 Репутация: нет Всего: нет |
выбор был сделан из соображений, как все...
Младший Брат показал всякие Сишные движки и там везде функция определяется так
А сам говорит что синтаксис
не встечал в нормальных программах... Правда есть одно НО, он пишет только на C#, а не на с++ вобщем последовал я его примеру |
||||
|
|||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Т.е пишете на C++ как все на С ?! круто ! тогда и vector не используйте, в С его никто не использует (за неимением такого) ![]()
Понятно практически все программы на C++ не нормальные.. ![]() Следуя вашей логике, если бы Вы были водителем автобуса, а брат троллейбуса, то заправлять свой транспорт не стали бы, так как брат сказал, что у нормального транспорта нет бензобака. ![]() |
||||
|
|||||
andrew_121 |
|
||||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
Срочно учу C#! Потому как хочу писать нормальные программы на нормальном языке ![]() -------------------- Удалил аккаунт. Прощайте! |
||||||
|
|||||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
GroundZero, пожалуйста, используй современное именование стандартных заголовочных файлов принятое в С++:
#include <stdlib.h> -> #include <cstdlib> #include <string.h> -> #include <cstring> (для strcpy, strcmp и пр.) и/или #include <string> (для класса std::string) #include <stdio.h> -> #include <cstdio> И по возможности постарайся не смешивать языки Си и С++. Например, cstdio и cstring тебе вряд ли понадобятся при разработке программ на С++. Кстати, ссылка - очень удобная фича С++. Поэтому отказываются от нее только там, где это действительно необходимо. Но это не твой случай. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |