HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #4661  
Старый 10.01.2010, 01:20
herfleisch
Участник форума
Регистрация: 07.01.2009
Сообщений: 237
Провел на форуме:
745649

Репутация: 97
Отправить сообщение для herfleisch с помощью ICQ
По умолчанию

Цитата:
Сообщение от [Life]  
очередное горе, желающее, чтобы программа выполнялась за 0.00001с а не за 0.00005с. Мне лень вразумлять о преждевременной оптимизации, о том, что пишется код не для компьютера, а для программиста, и о прочих деталях пром кодинга, а не коленочного под пиво. Читайте книжки, или кодьте на асме. С++ сделали не для переписывания на нем си программ. Когда поймете, почему делают новые языки, такие как C++, Java, C#, тогда велкам.
А мне лень вразумлять о том, что человек, ИЗУЧАЮЩИЙ С++, должен знать о более оптимальных алгоритмах и приёмах. По-моему преимущество С++, заключающееся в возможности доступа к аппаратным средствам на уровне языка ассемблера, ещё никто не отменял. Иначе, может быть есть смысл фигачить кучи "высокоуровневых" программ на Delphi?

Человек ИЗУЧАЕТ С++. Вдумайтесь в смысл этих слов. Я вот сейчас очень доволен тем, что мои преподаватели по программированию не стали с ранних курсов загружать меня классами и объектами, а начали с самых основ.

К тому же, раз уж Вы заговорили о том, что С++ создан для облегчения жизни программисту, заявлю: метки только ухудшают понимание программы! Размывают чёткий алгоритм и структуру! А про оптимизацию, товарищ, я даже и не заикнулся.

[Life], таких как Вы послушать, так зарезервированных слов, как оказывается, не стоит знать и понимать. "Главное - классы! Рабочие классы, батенька!"

Последний раз редактировалось herfleisch; 10.01.2010 в 01:25..
 
Ответить с цитированием

  #4662  
Старый 10.01.2010, 01:25
Krist_ALL
Banned
Регистрация: 14.01.2009
Сообщений: 515
Провел на форуме:
1996429

Репутация: 468


Отправить сообщение для Krist_ALL с помощью ICQ
По умолчанию

1. Скажите что хранит переменная а
int& a=b; а ссылается на б,но что хранит а? Адрес? Вроде нет...

2. Show (int& a) {
... } что поступает на вход в функцию? Адрес а? Копия значения? Непойму никак...

3. Написано что нельзя сравнивать значения ссылой,а как же быть если это надо сделать?

4. Зачем придуманны ссылки когда есть указатели?

5. Если массив передается как аргумент в функцию ,то он передается по ссылке или передается адрес первого элемента?
 
Ответить с цитированием

  #4663  
Старый 10.01.2010, 01:30
herfleisch
Участник форума
Регистрация: 07.01.2009
Сообщений: 237
Провел на форуме:
745649

Репутация: 97
Отправить сообщение для herfleisch с помощью ICQ
По умолчанию

Цитата:
Сообщение от Krist_ALL  
1. Скажите что хранит переменная а
int& a=b; а ссылается на б,но что хранит а? Адрес? Вроде нет...

2. Show (int& a) {
... } что поступает на вход в функцию? Адрес а? Копия значения? Непойму никак...

3. Написано что нельзя сравнивать значения ссылой,а как же быть если это надо сделать?

4. Зачем придуманны ссылки когда есть указатели?

5. Если массив передается как аргумент в функцию ,то он передается по ссылке или передается адрес первого элемента?
Указатель - это адрес памяти, если переходить на делетанский язык. А ссылки - это, так сказать, псевдонимы. Используются, в основном, для передачи в функции вместо указателей.

Т.е., а будет хранить 1, как и б. Отсюда и отталкиваетесь.

Книга Б.Страуструпа по С++ в помощь. Супер-вещь!
 
Ответить с цитированием

  #4664  
Старый 10.01.2010, 01:38
Krist_ALL
Banned
Регистрация: 14.01.2009
Сообщений: 515
Провел на форуме:
1996429

Репутация: 468


Отправить сообщение для Krist_ALL с помощью ICQ
По умолчанию

Часто ли юзаются/нужны соединения?
Оч похожи соединения на структуры..
 
Ответить с цитированием

  #4665  
Старый 10.01.2010, 01:38
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

жжоте товарищи. первое - цитата моя. несколькими страницами раньше написана, и для другого контекста. второе - тут классы просто некуда приписать, так что все herfleisch подсказывал правильно. третье - ставьте копирайты етиж их налево

Krist_ALL
1 - ссылку на b. по сути типа указатель на блок памяти переменной b. только читать a можно без разыменовывания. вот и вся разница. т.е. пишем a = 1 => b тоже = 1. пишем b = 5 => a тоже равно 5
2 - аналогично с первым случаем. адрес переменной, с которым можно работать без * и ->.
3 -
Код:
int main(){
	int a = 5;
	int b = 7;
	int &c = a;
	int &d = b;
	cout << ((c == a) ? "true\n" : "false\n");
}
4 - для удобства. постепенно поймешь, когда придется писать много кода с классами. со ссылкой тебе не нужно держать в памяти какая переменная указатель, а какая ссылка. везде ставишь точку и все. ну и как параметр, в который возвращает функция знчение используется. когда функция должна вернуть больше одной величины.
5 - массив передается по умолчанию как указатель. можно передать массив по ссылке.

не соединения а объединения. юзаются весьма редко.
 
Ответить с цитированием

  #4666  
Старый 10.01.2010, 01:47
Irdis
Участник форума
Регистрация: 06.02.2006
Сообщений: 177
Провел на форуме:
1576821

Репутация: 88
Отправить сообщение для Irdis с помощью ICQ
По умолчанию

del
 
Ответить с цитированием

  #4667  
Старый 10.01.2010, 02:05
Krist_ALL
Banned
Регистрация: 14.01.2009
Сообщений: 515
Провел на форуме:
1996429

Репутация: 468


Отправить сообщение для Krist_ALL с помощью ICQ
По умолчанию

4. Какую точку ставить?О.О

а чем отличается
s(char a[]) {
... }
и
s(char* a[]) {
...}
?
Второй код писать когда из функции я буду изменять массив?
Тогда надо передать массив так s(&a) да?
Или..
Вообще написано что если в функцию передан массив ,то когда в функции делается ++ ,то с++ просто сдвигает на нужную ячейку и все. => в функцию передается адрес начала массива.
Когда массив из цифр,то чтоб передать массив в функцию,надо еще и передать ск элементов в нем,а когда массив чар из букв,то не нада размер т.К. Функция определит конец по нул байту..
Блин ппц с этими указателями.. После пхп с++ оч сложно учить.
 
Ответить с цитированием

  #4668  
Старый 10.01.2010, 02:28
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

не на том внимание заостряешь. массивы по ссылке передавать смысл есть только если тебе нужно в переменную вернуть массив. вообще используют std::vector, чтобы нагляднее все было.

s(char a[]) {
... }
и
s(char* a[]) {
...}

ты итак итак можешь изменить массив, потому что передаешь указатель на него. но вторая запись не эквивалентна первой. во втором случае ты передаешь двумерный массив. в этом реальный напряг с++. ибо в принципе это и двумерный массив, и передача указателя на адрес, хранящий одномерный массив. т.е. этот код может значить то, о чем думал программист, а не то, о чем нам говорит язык. собсно поэтому тут лучше использовать ссылку. чтобы видеть одномерный массив, переданный по ссылке, а не думерный массив.

по поводу инкремента и прочего - вот кто тебе мешает сделать проект и проверить все глазами и руками. делаешь массив. передаешь его в функцию. там инкрементишь. выходишь из функции и смотришь, изменилось ли значение исходной переменной, которую передал.

Код:
void s(char* a){
	a++;
	*a = '_';
}

void s2(char* &a){
	a++; // очень плохо ибо delete не сработает -> утечка памяти
	*a = '_';
}

void s3(char* &a){
	delete [] a; // иначе утечка памяти
	a = new char [strlen("foobar") + 1];
	strcpy(a, "foobar");
}
int main(){
	char* a = new char [5];
	strcpy(a, "test");
	s3(a);
	cout << a;
}
PS: для уменьшения бардака есть такое слово как typedef. Определив char* как pchar ты упростишь читаемость кода. s(pchar &a) - ссылка на массив символов

Последний раз редактировалось Ra$cal; 10.01.2010 в 02:35..
 
Ответить с цитированием

  #4669  
Старый 10.01.2010, 02:37
Krist_ALL
Banned
Регистрация: 14.01.2009
Сообщений: 515
Провел на форуме:
1996429

Репутация: 468


Отправить сообщение для Krist_ALL с помощью ICQ
По умолчанию

Ты еще больше меня запутал( напиши в аську мне плз.
 
Ответить с цитированием

  #4670  
Старый 10.01.2010, 02:49
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

не, по асе не консультирую. ибо вместо того, чтобы попробовать учиться, писать код, компилить, наблюдать за работой, понимать, предпочитают сразу спрашивать. в этом плане форум самое то. я те пример кода привел. бери его и дебаж до просветления. будут доп вопросы по поводу конкретного кода - пиши на форум.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Сценарии/CMF/СMS 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ