Карта сайта

Это автоматически сохраненная страница от 27.05.2013. Оригинал был здесь: http://2ch.hk/b/res/48851795.html
Сайт a2ch.ru не связан с авторами и содержимым страницы
жалоба / abuse: admin@a2ch.ru

Пнд 27 Май 2013 15:58:25
Указателей в Си тред
Суп, бэ. В программаче полтора анона, поэтому спрошу здесь. Я изучаю язык Си уже пару месяцев и не могу до сих пор понять: НАХУЯ НУЖНЫ ЕБАНЫЕ УКАЗАТЕЛИ? Поясни мне, пожалуйста, по хардкору, анон-программист.

Первокурсота-кун


Пнд 27 Май 2013 16:00:05
>>48851795
>Суп, бэ
>программаче
>анона
>по хардкору
>анон
>Первокурсота
>кун

Пнд 27 Май 2013 16:01:20
>>48851795
Бамп

Пнд 27 Май 2013 16:03:27
>>48851923
бамп

Пнд 27 Май 2013 16:03:37
>>48851795
Чтобы обращаться к памяти

Пнд 27 Май 2013 16:04:54
>>48852022
К участку памяти

Пнд 27 Май 2013 16:06:38
>>48852022
Зачем? Вот у меня, например, такое задание: Дана матрица. Если суммы элементов строк матрицы различны, то транспонировать матрицу.
Нахуя мне обращаться к участку памяти?

Пнд 27 Май 2013 16:08:56
>>48852155
Бамп

Пнд 27 Май 2013 16:09:06
>>48851795
Господин постшкольник! Без указателей невозможна адекватная работа с объектами и хардварная оптимизация. Соси хуй

Пнд 27 Май 2013 16:10:15
>>48852260
Как это проявляется?

Пнд 27 Май 2013 16:13:11
>>48852291
Можешь создавать указатели на объект вместо его копирования в новый блок подойди к преподу, если совсем ничего не понимаешь

Пнд 27 Май 2013 16:13:40
>>48851795
Забей. Тебе просто не дано. Есть два типа людей: которые могут и которые не могут. Ты к первому типу явно не относишься. Возможно тебе стоит подумать об экономическом или юридическом.

Пнд 27 Май 2013 16:14:39
>>48852427
В смысле "копирования в новый блок"? Вот у меня есть объект. Матрица, допустим Зачем мне нужен указатель на нее.

Пнд 27 Май 2013 16:17:14
>>48852492
Ну ты и зеленый! Для таких примитивных штук тебе вообще ничего не нужно, кроме турбопаскаля.
Представь, что у тебя две коллекции и в обе нужно включить объект. Ставишь указатель на один объект, а не два. Профит

Пнд 27 Май 2013 16:20:13
>>48852450
Он и так небось там, сам изучает Си

Пнд 27 Май 2013 16:22:46
>>48851795
Завязывай бро. Программирование тебе просто не дано. Не твое это. Не расстраивайся и не унывай. Ты еще первый курс, значит тебе лет 17, ты еще растешь и развиваешься. У теья есть все шансы начать упарывать гормоны и стать трапом. У нас в стране гей шлюхи в почете и при бабле. Меняйся пока молодой, у теья вся жизнь впереди. Добра

Пнд 27 Май 2013 16:23:13
>>48852492
А матрица где расположена, м?

Пнд 27 Май 2013 16:24:45
Суп, бэ. В программаче полтора анона, поэтому спрошу здесь. Я изучаю алгоритмы уже пару месяцев и не могу до сих пор понять: НАХУЯ НУЖНЫ ЕБАНЫЕ ГРАФЫ? Поясни мне, пожалуйста, по хардкору, анон-программист.

>Первокурсота-кун

Пнд 27 Май 2013 16:25:28
Указатели, ссылки, работа с памятью. Бррр, я и забыл все радости этого сишного дерьма.
Почесал на всех опущенцев.
джавабог

Пнд 27 Май 2013 16:26:17

Суп, бэ. В программаче полтора анона, поэтому спрошу здесь. Я изучаю программиование уже пару месяцев и не могу до сих пор понять: НАХУЯ НУЖНЫ ЕБАНЫЕ ПРОГРАММИСТЫ? Поясни мне, пожалуйста, по хардкору, анон-программист.

Первокурсота-кун

Пнд 27 Май 2013 16:28:46
>>48852914
Какие нахуй матрицы? Вы совсем пизданулись, ОП - говношарашник, ему матрицы системы линейных уравнений в жизни не встретятся, будет говнокодить

Пнд 27 Май 2013 16:28:49
>>48852980
Дискретная математика не нужна. Алгоритмы тоже. Матан туда же. Диффурами подтерся. Численные методы обоссал. Методы оптимизации на хую вертел. Линал - труба шатал.
Технари ненужны

Пнд 27 Май 2013 16:29:05
>>48853011
>джавабог
>джава
>бог

Пнд 27 Май 2013 16:30:23
>>48853159
Что-то не так,м, сучечка?

Пнд 27 Май 2013 16:30:38
>>48853159
Чо, нормальный язык высокогоуровня. Хуже Си, лучше Си#

Пнд 27 Май 2013 16:32:24
>>48853203
>Энтерпрайзоговно
>бог

Пнд 27 Май 2013 16:32:57
>>48852450
>не дано
Ох лол. Чего только люди не придумают, лишь бы сидеть на жопе ровно.

Пнд 27 Май 2013 16:33:15
>>48853039

Суп, бэ. В программаче полтора анона, поэтому спрошу здесь. Я изучаю уебков, которые хотят стать программистами, уже пару месяцев и не могу до сих пор понять: НАХУЯ НУЖНЫ ЕБАНЫЕ ГАЗОКАМЕРЫ? Поясни мне, пожалуйста, по хардкору, анон-программист.

>Первокурсота-кун

Пнд 27 Май 2013 16:34:28
>>48853143
поэтому я программирую мышкой

Пнд 27 Май 2013 16:36:27
>>48853380
Лал. Но он частично прав, диффуры и матан даже десятой части кодеров не понадобятся.

Пнд 27 Май 2013 16:39:43
Суп, бэ. В программаче полтора анона, поэтому спрошу здесь. Я изучаю поиск объектов на изображении уже пару дней и не могу до сих пор понять: НАХУЯ НУЖНА ВТОРАЯ ЭРОЗИЯ ДОПОЛНЕНИЯ А ПО (W/X)? Поясни мне, пожалуйста, по хардкору, анон-программист.

Второкурсота-кун

Пнд 27 Май 2013 16:40:15
Для передачи параметров в функции по ссылке, чтобы внутри неё работать с тем же объектом, который был снаружи.

Пнд 27 Май 2013 16:41:44
>>48853452
Да я согласен. Задач много, для их выполнения может подойти специалист разной квалификации, лишь бы сделал. Цена/качество во все поля.

Пнд 27 Май 2013 16:42:44
>>48853011
>Интегралы, дифференциалы, нахождение пределов. Бррр, я и забыл все радости этого сраного матана.
>Почесал на всех опущенцев.
>дворникбог

Пнд 27 Май 2013 16:46:23
>>48853011
Я тоже забыл, но в отличии от тебя, я стыжусь этого.

Пнд 27 Май 2013 16:50:04
>>48853284
Как там хаскель поживает, вонабиилитка?
Поссал опущенцу в ухо

Пнд 27 Май 2013 16:55:30
>>48853719
Че ты там прокукарекал, нищеброд? Извини, мне твои петушиные завывания не слышны - в моем лексусе слишком громко играет музыка.

Пнд 27 Май 2013 16:59:32
>>48854389
Говорю, ты расписался в своем невежестве и горжишься этим.

Пнд 27 Май 2013 17:01:10
>>48851795
Если ты учишься на программиста, то бросай нахуй. Тебе ловить вообще нечего. Переводись на гуманитарный.
PS. Не оскорбления, а довольно серьёзный совет. Быть гуманитарием не стыдно. И не нужно было поступать на тех. специальность, начитавшись пабликов в вк про гуманитариев и макдак.

Пнд 27 Май 2013 17:04:06
>>48854686
> Быть гуманитарием не стыдно
Вспомнил пасту про карие глаза

Пнд 27 Май 2013 17:07:03
>>48854820
Вспомнил сам@поделись с аноном

Пнд 27 Май 2013 17:07:44
>>48851795
тред не читал, и сразу бампаю!

Пнд 27 Май 2013 17:10:28
Короче местная петушня ничего путного не может сказать я вижу.

Пнд 27 Май 2013 17:11:07
>>48855099
Анус твой петушня, петушня

Пнд 27 Май 2013 17:11:21
я бы спросил так - зачем нужны указатели и ссылки и в чем разница, когда лучше использовать одни и другие.

Пнд 27 Май 2013 17:11:57
>>48851795
Лол. Я из-за такого же непонимания указателей вылетел из вузика несколько лет назад.

Пнд 27 Май 2013 17:12:07
>>48855122
Хотел тебе пояснить за всю хуйню, да лень мамку твою с кукана снимать

Пнд 27 Май 2013 17:12:54
>>48855162
ну и разобрался то хоть?

Пнд 27 Май 2013 17:13:22
>>48855173
А ты некрофил, маня. Может еще и гомосек?

Пнд 27 Май 2013 17:13:45
>>48855206
Нет конечно. Я поступил в другой вузик на гуманитария и ни о чем не жалею.

Пнд 27 Май 2013 17:15:03
>>48855250
свободная касса?

Пнд 27 Май 2013 17:17:26
>>48855313
> свободная касса?
Не угадал. Юристобог.

Пнд 27 Май 2013 17:18:29
>>48855414
ну молодец епт. Значит нахуй тебе не впало кодить.

Пнд 27 Май 2013 17:18:37
#include <stdio.h>

main () {
// объявление массива и его инициализация
int arr[10] = {101, 102, 103, 104, 105, 106, 107, 108, 109, 110};
int *p, *q; // указатели на тип int
int i;

printf("Массив: ");
for (i = 0; i < 10; i++)
printf(" [%d]=%d ", i, arr);
printf("\n\n");

// 1 ----------------------------------------------------------------------
p = &amp;arr[0];
printf("Адрес 1-го элемента массива (p): %p\n", p);
printf("Значение 1-го элемента массива (*p): %d\n", *p);

q = p + 1;
printf("Адрес 2-го элемента массива (q): %p\n", q);
printf("Значение 2-го элемента массива (*q): %d\n", *q);

q = q + 2;
printf("Адрес 4-го элемента массива (q): %p\n", q);
printf("Значение 4-го элемента массива (*q): %d\n", *q);
printf("\n");
}

Пнд 27 Май 2013 17:18:48
>>48855313
Анус твой фуфел, собака

Пнд 27 Май 2013 17:20:44
>>48855466
Ах, да переменная типа int занимает 4 байта (для 32 разрядных систем).

Пнд 27 Май 2013 17:22:04
>>48855571
С пунктуацией проблемы у тебя.

Пнд 27 Май 2013 17:24:42
>>48855466 и что ? что дало применение указателей?

Пнд 27 Май 2013 17:25:22
>>48851795
Хуй с ними массивами, но с деревьями без указателей никак.

Пнд 27 Май 2013 17:26:22
>>48855819
почему нельзя напрямую к переменной обращаться?

Пнд 27 Май 2013 17:27:13
>>48851795
Серёжа?

Пнд 27 Май 2013 17:34:22
>>48855871
Потому что дерево - сложная иерархическая структура, нельзя сразу взять и выделить столько памяти, сколько нужно, а значит память будет выделяться по необходимости. А раз выделяется память, то и нужен указатель на нее.

Пнд 27 Май 2013 17:35:34
Поясните за retutn в JAVASCRIPT. Зачем эта команда нужна?

Пнд 27 Май 2013 17:36:39
>>48856300
>retutn
?

Пнд 27 Май 2013 17:36:50
>>48855871
Представь, что у тебя опизденических размеров массив и опизденически нагруженная программа, в которой ежесекундно нужно, например, перемножать матрицы.
Без указателей тебе придется передавать все значения матриц, которые занимают sizeof(Int) * размер матрицы памяты, в случае с указателями ты передаешь лишь сам указатель, который занимает то ли 4 килобайта, то ли какую-то хуйню (щас налетят яумамыпогромисты и поправят меня).
А теперь вспомни, что всю эту хуйню нам нужно делать по несколько раз в секунду. Теперь понял?

Пнд 27 Май 2013 17:37:14
>>48856371
Тьфу, блять, не туда.

Пнд 27 Май 2013 17:37:25
>>48856362
return
фикс Хотя можно было догадаться

Пнд 27 Май 2013 17:37:27
>>48856244 покажи пример с коментами каждой строчки плиз

Пнд 27 Май 2013 17:38:38
>>48856371
4 байта

Пнд 27 Май 2013 17:39:15
>>48856482
Да. 4 кб и правда слишком дохуя.

Пнд 27 Май 2013 17:39:30
>>48856300
Бамп вопросу
return

Пнд 27 Май 2013 17:41:21
>>48856538
Ты кого спрашиваешь? И почему только в JS

Пнд 27 Май 2013 17:42:59
>>48856644
Я всех спрашиваю.
Да я не знаю, где ещё эта команда есть, просто я именно JS начал изучать.

Пнд 27 Май 2013 17:45:36
>>48856725
А возвращать значение функции только через глобальные переменные?

function addThree(argl, arg2, arg3)
{
return (argl+arg2+arg3);
}

Пнд 27 Май 2013 17:55:46
>>48856864
Зачем ВОЗВРАЩАТЬ значение функции? Почему бы просто не записать console.log/alert/ещё какая-нибудь хуйня, например?

Пнд 27 Май 2013 17:58:01
>>48852450
>или юридическом
сука ты.
хотя прав. мимоюрист

Пнд 27 Май 2013 18:01:05
Поздновато мне идти на юристобога, ибо я сейчас экзамены не сдам, лол.

Пнд 27 Май 2013 18:03:13
>>48855466
Ну и что даёт мне знание адреса элемента массива? И почему, если надо вывести значение какого-то элемента, надо изъёбываться в указателями, а не тупо указать arr[n]?

Пнд 27 Май 2013 18:11:06
>>48857672
Питушок, я открою тебе страшную тайну: в СИ массивы фактические и являются указателями. Массив и является указателем на список значений, а запись arr[n] и является указателем на n-й элемент из списка. Ни в какие функции никакие массивы никогда не передаются. На самом деле туда всегда передаются только указатели, т.к. массив и указатель - практически одно и то же.

Пнд 27 Май 2013 18:11:36
>>48857672
Не претендую на истинность, но как это понимаю я.
Смотри. У тебя в компе есть память. Память хуевая, но какая есть. Ты в память забил какую-то хуйню. Теперь тебе нужно эту хуйню использовать для решения, скажем, квадратного уравнения. Ты конечно можешь указать arr[n], но получится, что тебе надо взять массив, пробежать по нему до n (а массив-то охуеть какой может быть), вынуть оттуда n, сунуть его куда-то еще, чтобы не проебать (в Ассемблере это аккумулятор, например). Дохуя работы, а память хуевая и от этого пекарня тормозит.

А когда ты хуячишь указатель, ты как бы говоришь "Ползи туда, запомни значения и нихуя не трогай." Намного быстрее же!

Пнд 27 Май 2013 18:13:35
>>48858029
Ещё один школьник. В си работа с массивами = работе с указателями.

Пнд 27 Май 2013 18:14:24
ОП - долбоеб.
Ну как можно не понимать указатели?! Это же просто смешно!

Пнд 27 Май 2013 18:14:26
>>48858029
Храни Оллах Гвидо, за то, что он избавил меня ленивого хуя от всей этой поеботы.

Пнд 27 Май 2013 18:15:15
>>48857672
>Ну и что даёт мне знание адреса элемента массива? И почему, если надо вывести значение какого-то элемента, надо изъёбываться в указателями, а не тупо указать arr[n]?

Не парься, в СИ обращаясь к массиву как arr[n] ты и так работаешь с указателями.

Пнд 27 Май 2013 18:15:40
>>48858108
Таки не моя специальность (ибо ассемблероуебок).
За пояснение спасибо.

Пнд 27 Май 2013 18:16:37
А указатели нужны для того, чтобы не передавать как параметр кол-во данных через СТЕК, а передать просто 1 адрес на начало массива. Сам посуди. ты переедёшь гиг данных или 1 адрес на эти данные, ну ты понел.

В плюсах есть такая шняга как ссылки ещё.

Пнд 27 Май 2013 18:17:52
>>48858185
Ну и зачем тогда все эти изъёбства с обявнением новых переменных-указателей?

Пнд 27 Май 2013 18:18:07
>>48858185
двачую. Написать arr[n] - это тоже самое, что написать
*(arr + n)

Пнд 27 Май 2013 18:19:25
>>48858296
Для выделения памяти, например. Физически задав массив ты его не можешь изменить, например. Ну или как я писал выше для передачи массива другой функции, точнее передаётся его адрес и ОБЯЗАТЕЛЬНО его длина. Вот такое изъёбство, т.к. язык не знает длину массива, передающуюся через указатель.

Пнд 27 Май 2013 18:19:46
>>48856371
БОЛЬШОЕ СПАСИБО.

Пнд 27 Май 2013 18:20:06
>>48858241
Уеба, в байтопараше всегда данные передаются только по ссылкам.

Пнд 27 Май 2013 18:21:13
>>48858399
Не всегда. Но все равно справедливо.

Пнд 27 Май 2013 18:21:28
>>48852155

А что делать если матрица не квадратная?

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

Пнд 27 Май 2013 18:24:00
>>48858442
Всегда бля. Больше 4(8) байт через стек ты просто физически не пропихнешь. Если залупа в этот размер не укладывается, то ее только через ссылку возможно передать.

Пнд 27 Май 2013 18:24:53
Здравствуй, программач. Я ебаное быдло, пинал хуй весь год, сейчас надо срочно сдавать хвосты. Я не знаю, зачем пошел в программисты, наверное, я жадный долбоеб и хочу по-быстрому зарабатывать. Программисты ведь много получают, и бабы текут... Ну ты понял. Но я ленивое хуйло, поэтому не читаю книги и не пишу код, ничего не хочу делать. Но ты мне помоги. Чтобы я получил корочку и пошел быдлокодером. Возможно, я займу твое место, лол. У моих родителей хорошие связи, и я буду твоим менеджером через пару лет. И таких как я - тысячи. А лабы делают только неудачники-задроты. Я им в щи прописываю с вертушки.

А теперь помоги посчитать площадь треугольника на паскале.

Пнд 27 Май 2013 18:25:16
А теперь поясните - в чем разница между указателями и ссылками? Ведь по сути это одно и тоже.

А еще поясните такую хуйню - есть хип (куча) и есть стек - в чем разница между ними - на пальцах.

Только начал изучать язык кун.

Пнд 27 Май 2013 18:26:33
>>48858642
Ссылка не может быть нулевой, например. А вообе, читай документацию.

Пнд 27 Май 2013 18:26:59
>>48858296
Например, у тебя есть огромная структура данных, занимающая много памяти.
Ты хочешь передать эту структуру данных другой функции в качестве параметра. При прямой передаче, всю структуру данных приходится еще раз копировать в стек, т.е. в стеке лежит огромная не нужная копия. Копирование занимает довольно много времени и расходует память.

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



Пнд 27 Май 2013 18:27:04
>>48851795
>НАХУЯ НУЖНЫ ЕБАНЫЕ УКАЗАТЕЛИ?
Дабы не создавать копии одного и того же говна в памяти лишний раз.

Если у тебя возникают такие вопросы через 2 месяца обучения - забей хуй и разучи что-нибудь посовременнее с автоматической сборкой мусора.

Пнд 27 Май 2013 18:27:52
>>48858616

Двачую этого. Ну нахуя ты сюда пошел если тебе не интересно, ОП?

Пнд 27 Май 2013 18:28:52
>>48858730
>что-нибудь посовременнее с автоматической сборкой мусора.
Это ведь не плохо, да?

Пнд 27 Май 2013 18:29:48
>>48858723
>При прямой передаче, всю структуру данных приходится еще раз копировать в стек, т.е. в стеке лежит огромная не нужная копия.
Откуда вы только лезете, кретины.

Пнд 27 Май 2013 18:31:01
>>48858642
Простыми словами: Стек автоматически распределяемая память, куча - вручную.

Пнд 27 Май 2013 18:31:36
>>48858813
Это заебись.
Сейчас начнут орать что НЕ ТРУ, но для большинства задач - это лучше и меньше ебли.

Пнд 27 Май 2013 18:31:48
>>48858913
Спасибо.

Пнд 27 Май 2013 18:33:38
>>48858296
Например, у тебя есть огромная структура данных, занимающая много памяти.
Ты хочешь передать эту структуру данных другой функции в качестве параметра. При прямой передаче, всю структуру данных приходится еще раз копировать в стек, т.е. в стеке лежит огромная не нужная копия. Копирование занимает довольно много времени и расходует память.

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

Пнд 27 Май 2013 18:34:27
>>48858813
Это медленнее, но с нынешней скоростью печей всем похуй

Пнд 27 Май 2013 18:35:29
Все бугурдуны могут съебаться из треда. Всем нормальным хочу сказать спасибо. Бывает так, что проебешь какую нибудь тему и пиздец, потом читай не читай, все равно нихуя не понятно. У меня так было с битовыми полями - проебал и привет. Потом читаю - вроде все понятно -но нахуя? Потом попросил препода что бы объяснил еще раз, вроде было понятно, сейчас уже и забыл что оно такое, за ненадобностью.
Такая же история с делегатами в шарпе, тоже проебал тему, а потом читал, читал - нихуя не понятно, пока еще раз не объяснили простым языком.
Потому заебись когда у кого то получается на пальцах рассказать сложное, это реально помогает - если не поймешь, то хоть будешь знать в какюу сторону смотреть.

Пнд 27 Май 2013 18:35:32
>>48858108
Пиздец, бро, они все тут такие.

Пнд 27 Май 2013 18:36:13
>>48858855
Ты чьих будешь, унтерменш?

Пнд 27 Май 2013 18:36:43
Итак, оп вновь врывается ИТТ. Что я понял из треда: указатели нужно для более быстрой работы с памятью. Если нужно передать какую-то хуйню большого размера из одного места в другое, то проще будет нихуя не передавать, а просто в то место, где нужна хуйня такого размера поместить указатель, чтобы это место ссылалась на ту хуйню, расположенную в изначальном месте. Теперь вопрос еще. Вот есть у меня неебацо большой массив матриц. Мне нужно сложить все элементы в определенных матрицах и переменожить результаты этих сложений. Я должен написать функцию, которая перемножает элементы в определенной матрицы, входных элементом должен быть указатель на эту матрицу? Т.е. допустим *a[n]? Если я буду использовать как входной параметр a[n], то это значит, что в функцию будет перемещаться вся n-ая матрица? Если я разместил указатель во входных данных, это значит, что в самой функции я уже могу свободно обращаться к любому элементы матрицы? Т.е. допустим объявил указатель и в функции могу уже писать m=a[n-10]+a[n-9] и программа выполнит это действие без выебонов? Если все так, как я понял, то объясните мне теперь за адреса и разыменование.

Пнд 27 Май 2013 18:37:08
Тупой нуб, как ты динамические структуры организуешь?

Пнд 27 Май 2013 18:41:14
>>48859180
Ну ты пиздец. Объясняю для тупых - есть твоя мамаша - жирная пизда. Она живет, например на улице ленина д.2 кв.34. Есть я, я живу на уливе Горького д.55 кв.34. Я хочу впердолить твоей мамаше. Но твоя мамаша слишком тяжелая для перемещения. Поэтому я беру у тебя бумажку с адресом (указатель) и когда мне нужно ее вздрючить - я обращаюсь по указанному адресу. Потом, когда мне твоя мамаша не нужна - я вызываю команду "очистить память" - рву бумажку и твоя мамаша самоликвидируется. Вот так это работает. Теперь понятно?

Пнд 27 Май 2013 18:41:33
>>48859200
vector<int> myVector;

Пнд 27 Май 2013 18:42:49
>>48859180
Всё проще. Кроме как через указатели ты никак не передашь свою матрицу функции, вот и всё. Передаёшь тупо a. А дальше как хочешь *a(arr + i), a похуй.

Пнд 27 Май 2013 18:43:11
>>48859399

При чем тут вектор, наркоман?

Пнд 27 Май 2013 18:44:58
>>48859381
Enjoy your УТЕЧКА ПАМЯТИ

Пнд 27 Май 2013 18:45:09
>>48859180
Нормальные пацаны, массивы в c не используют, а используют исключительно указатели.
Если тебе нужен массив чисел, то используешь
int *array, int length

Если нужен массив массивов чисел, то используешь
int **array, int length1, int length2

и т.д.

Пнд 27 Май 2013 18:46:15
>>48859526
В каком месте? Мамаша на Ленина, я на Горького, когда нужно - взяли и поехал. Где утечка?

Пнд 27 Май 2013 18:46:57
>>48859447

Ну а если мне нужно найти матрицы с типом данных int и только в таких матрицах сложить все элементы, то при передаче указателя *a, мне придется использовать тип данных другой, больше размером. Так будет легче передавать указатель именно на определенную матрицу в массиве матриц или как-то похуй? 4байта, 8 байт, роли особой не играет?

Пнд 27 Май 2013 18:48:04
>>48859614
НАХУЙ ТЕБЕ МАТРИЦЫ, НАРКОМАН?

Пнд 27 Май 2013 18:48:55
>>48859584
Когда ты порвал бумажку, ты не убил мамашу

Пнд 27 Май 2013 18:49:47
>>48859694
А это, знаешь ли, утечка твоей биоинформации в правоохранительные органы. Тебя найдут и посадят.

Пнд 27 Май 2013 18:49:50
>>48859614
Передавай как void *a

Пнд 27 Май 2013 18:50:08
>>48859662
Ну это основа любого обучения и сейчас мне это нужно для лаб.

Пнд 27 Май 2013 18:51:17
>>48859743
>Алсо, в твоем случае нужно писать дополнительные функции для того, чтобы дать памяти и для того, чтобы удалить ненужную память?

Нужно.

Пнд 27 Май 2013 18:52:07
>>48859694
Я нанял килеров и они ее мочканули. А в шарпе она сама бы выпилилась

Пнд 27 Май 2013 18:54:12
>>48859790
Ну а вводить точно также? Т.е. у меня по сути будут хранится тупо числа с определенными указателями, которые можно визуально писать как массивы?

Пнд 27 Май 2013 18:54:30
С адресами работать быстрее, чем свапать значения переменных. Как тебе такое объяснение, например? А вообще ты хуй.

Пнд 27 Май 2013 18:56:00
В ЧЕМ РАЗНИЦА МЕЖДУ УКАЗАТЕЛЯМИ И ССЫЛКАМИ????????????

Пнд 27 Май 2013 18:56:32
>>48859180
>Что я понял из треда: указатели нужно для более быстрой работы с памятью. Если нужно передать какую-то хуйню большого размера из одного места в другое, то проще будет нихуя не передавать, а просто в то место, где нужна хуйня такого размера поместить указатель, чтобы это место ссылалась на ту хуйню, расположенную в изначальном месте.
Нет, бля. Тред зашкварили тупые школьники, которые нихуя не понимают. В си и массивы и структуры передаются ВСЕГДА через указатели. Разница в том, что при объявлении массива указатель на него фактически не держится в памяти, т.к. массив лежит на стеке, а компилятор автоматически считает расположение всех элементов массвиа относительно того окошка стека в котором сейчас находится. Указатель на окошко стека всегда компилятором держится для вычисления положения локальных переменных в памяти. При выделении же указателя явно, создается отдельная переменная на стеке в которой указатель на первый элемент массива всегда и лежит.

Пнд 27 Май 2013 18:58:18
>>48860001
В Сибири.

Пнд 27 Май 2013 18:58:35
>>48851795
ты охуел задавать такие вопросы? я юрист-кун и имею представление об указателях. блеать, у меня аж бомбанул. КАК МОЖНО ПАРУ МЕСЯЦЕВ ИЗУЧАТЬ И НИ РАЗУ СУКА НЕ ЮЗАТЬ УКАЗАТЕЛИ!? да это просто глобальный пиздец. да блять, даже обычную сука форму ты хуй заюзаешь без указателей. если конечно у тебя там больше, чем один класс. да не понимать что это такое, это как не уметь срать. ТЫ ПИЗДЕЦ, А НЕ ОП! ТАКИХ НУЖНО В ДЕТСТВЕ ДУШИТЬ!

Пнд 27 Май 2013 19:02:32
Указатель - переменная, ссылка - число. Ссылки хранятся в указателях также, как числа в числовых переменных. Если так не поймешь - программирование тебе не нужно.

Пнд 27 Май 2013 19:05:35
>>48860017
и структуры

Пнд 27 Май 2013 19:07:17
>>48860282
Т.е. у меня массив a={1, 2, 3, 4, 5, 6}; и если я напишу &amp;a[3], то что это будет?

Пнд 27 Май 2013 19:07:21
>>48851795

Смени лучше, братишка, специальность.

Пнд 27 Май 2013 19:10:43
>>48860463
Адрес третьего элемента массива. Визуально - каша из цифр.

Пнд 27 Май 2013 19:10:56
>>48860466
Пошел нахуй, мудень.

Пнд 27 Май 2013 19:11:16
>>48860463
Адрес четвертого элемента массива.

Пнд 27 Май 2013 19:15:30
>>48860655
А так *(&amp;a[3]) я получу значение четвертого элемента?

Пнд 27 Май 2013 19:16:23
>>48860873
Да, получишь. Мог бы не спрашивать, а проверить.

Пнд 27 Май 2013 19:18:45
>>48860873
По идее, да, но зачем. a[3] уже является разыменованием. То же самое, что *(a+3).
троллейбус из буханки хлеба.жпг

Пнд 27 Май 2013 19:19:54
>>48860990
А вот зачем нужно разыменование? Бывают случаи, когда нам известен адрес, но неизвестно значение переменной по этому адресу? Или это нам сейчас толкают эту хуйню с массивами и прочей похожей фигней, а в будущем для каких-то нужд разыменование действительно будет нужно?

Пнд 27 Май 2013 19:24:52
>>48860463
адрес пятого элемента масива

Пнд 27 Май 2013 19:25:30
>>48851795
Чтобы не передавать в функции многомегабайтные объекты (они копируюются при передаче), а просто ссылку на объект. /thread

Пнд 27 Май 2013 19:30:27
Суп, бэ. В программаче полтора анона, поэтому спрошу здесь. Я изучаю язык Си уже пару месяцев и не могу до сих пор понять: НАХУЯ НУЖЕН ЕБАНЫЙ ЗНАК СЛОЖЕНИЯ? Поясни мне, пожалуйста, по хардкору, анон-программист.

Первокурсота-кун

Пнд 27 Май 2013 19:30:46
>>48851795
У тебя есть функция, которая меняет местами значения 2 переменных:
void swap (int a, int b)
{
int temp;
temp=a;
a=b;
b=temp;
}
Так вот, нихуя эта функция не сделает.
А вот если передавать указатели на эти переменные, то будут изменяться, ибо ты передаешь адреса переменных, которые нужно изменить.

Пнд 27 Май 2013 19:32:46
>>48861074
Адрес это имя переменной. Компьютер, знаешь ли, не работает с буквами, он работает с цифрами. Каждое число, хранящееся в памяти, имеет адрес, чтобы его из памяти извлекать. Указатели нужны не для меньшего расхода памяти и быстрой работы, это всего лишь следствия.

Зачем нужно разыменование? Да затем, чтобы добираться до безымянных ячеек памяти. Или ты думаешь, можно назвать каждую ячейку своим именем и все будет хорошо? Во-первых, имен не хватит, во-вторых, не всегда нужно их называть, например когда работаешь с большими объемами данных.

Спрашивай еще вопросы, может объясню.

Пнд 27 Май 2013 19:32:55
>>48861491
Так если у меня a и b определены в main, то передадутся значения от туда.

Пнд 27 Май 2013 19:33:35
>>48861491

#define swap(a, b) ((a) ^= (b) ^= (a) ^= (b))


Указатели не нужны.

Пнд 27 Май 2013 19:34:01
>>48861074
В смысле, зачем адрес? Адрес - эта та вещь, которая хранится в твоем указателе. Разыменование - получение значения, которое хранится по адресу.

int a=0;
int *b; //b - адрес, *b - значение по этому адресу. Сейчас в b нет ничего
b=&amp;a; // а==0, b указывает на а
*b+=5 // теперь a==5
b+=5 //указатель уехал, не делайте так с не-массивами, дети

Указатели нужны для работ с динамическими переменными (int *a=new int[10]), для передачи данных в функцию (если в функции изменить переданную таким образом переменную, она изменится в основной программе. К тому же, большие структуры вообще никогда не передают по-другому, потому что медленно).

Пнд 27 Май 2013 19:36:32
>>48861600
Передадутся копии этих значений, новые переменные. Внутри твоей функции можешь делать с ними, что хочешь, в основной программе с a и b ничего не случится.

Пнд 27 Май 2013 19:37:02
>>48861633
Поссал в рот тебе.
b = (a += b -= a) - b;

Пнд 27 Май 2013 19:38:03
>>48861785

Переполнение и заём не определены.

Пнд 27 Май 2013 19:40:04
>>48861074
Вот тебе сразу пример. Есть поток байтов, будь то файл, или последовательность сетевых пакетов. Тебе абсолютно неизвестно, что в нем может быть, может текст, может одни цифры, может вообще бинарный код. Тебе нужно определить, встречается ли в нем некая последовательность битов(строка, символ или число - не известно, а уж в каком виде пользователь задаст последовательность - вопрос вселенского зла). Самый простой способ - разбить последовательность на байты, выделить в памяти кусок размером с эту последовательность, а затем сравнивать входящий поток данных с этим куском памяти. Типов никаких нет, размеры неизвестны на стадии программирования - при выделении памяти ты получишь только указатель на область памяти, и тебе придется его РАЗЫМЕНОВЫВАТЬ, чтобы сравнивать.

Пнд 27 Май 2013 19:40:13
>>48861841
Ну так определи. Не пезди, все работает.

Пнд 27 Май 2013 19:40:44
>>48861656
Почему в основной программе изменится? Из-за new?
Алсо, вот допустим у нас b=0101, т.е. это адрес, допустим значения a=5. Если я к b прибавлю 5, то что произойдет?

Пнд 27 Май 2013 19:42:08
>>48851795
>НАХУЯ НУЖНЫ ЕБАНЫЕ УКАЗАТЕЛИ
Чтобы передать в функцию истинные значения переменных, а не их копии, что было бы передай ты их без указателей.
Зачем такая передача нужна? Чтобы в функции, если тебе это нужно, изменялись эти самые переменные, указатель адрес, которых ты передал. Иначе изменения коснулись бы только копий переменных, не затрагивая переменные, которые ты передал. Ну охуеть теперь.

Пнд 27 Май 2013 19:42:17
>>48861656
Да, почувствуй разницу.

*b=new int();
*b=a; //а==5, b==5
*b++; //b==6, a==5, это были разные области памяти

Пнд 27 Май 2013 19:44:11
>>48861766
Так а если я не хочу менять значение a и b, то указатели-это хуево? Вот если у меня огроменный массив, в котором мне нужно кое-что поменять несколько раз и вывести уже измененные огроменные матрицы, то при выполнении нескольких функций подряд, в которые я передам указатель на огроменный массив, будет изменятся с каждым разом уже измененный массив. А если мне это не нужно?

Пнд 27 Май 2013 19:49:53
>>48861998
>Почему в основной программе изменится?
Ты о чем вообще?

>Алсо, вот допустим у нас b=0101, т.е. это адрес, допустим значения a=5. Если я к b прибавлю 5, то что произойдет?
Указатель b станет равен 0101+5=1010, то есть указатель сдвинется на 5 позиций вправо (в байтах одна позиция - столько байт, сколько занимает переменная того типа, на который указывает указатель). Если у тебя по адресу b не была выделена память под массив 5 элементов и больше, то по адресу 1010 ты не обнаружишь ничего полезного.

Пнд 27 Май 2013 19:49:58
>>48861998
void SHLUHA(int a, int* b);
SHLUA(c, &amp;c);
При передаче в функцию, все параметры КОПИРУЮТСЯ в новую область памяти. Теперь смотри: передаешь значение переменной c - оно копируется, то есть значение переменной на месте первого аргумента не может измениться никак - функция просто не знает, где его менять. Передаешь значение(число) адреса переменной c, он копируется, но ты все равно можешь записать по этому адресу число - значит, функция может изменить значение переменной c, переданной через указатель.

>Алсо, вот допустим у нас b=0101, т.е. это адрес, допустим значения a=5. Если я к b прибавлю 5, то что произойдет?
b станет на 5 больше, будет указывать на ячейку памяти через 5 байтов после a. Там наверняка чужая информация, любая операционка при чтении/записи туда будет тебе хуй на пососать подсовывать.

Пнд 27 Май 2013 19:51:31
>>48862450
>через 5*sizeof(int) байтов после a.
fix

Пнд 27 Май 2013 19:51:50
Когда на 1-м курсе после Паскаля изучал C/C++, тоже головой бился и нихуя не понимал. Тогда мне препод сказал, мол, подумай о смене профессии. Теперь я на 6-м курсе. Программлю диплом на Qt c MinGW и всё это я в рот ебал. Лучше б я на учителя младших классов пошел

Пнд 27 Май 2013 19:52:42
>>48862170
Делаешь бля копию и работаешь с копией.

Пнд 27 Май 2013 19:53:42
>>48861966

a = .000000000000000000000000000000000000000000001;
b = .1

Сасай.

Пнд 27 Май 2013 19:55:49
>>48862444
>(если в функции изменить переданную таким образом переменную, она изменится в основной программе. К тому же, большие структуры вообще никогда не передают по-другому, потому что медленно).

Что значит таким образом? Как передать указатель так, чтобы значение, на которое указывается, не изменялось в основной программе.

Пнд 27 Май 2013 19:56:28
>>48862170
Большие структуры типа массивов или объектов с массивом внутри без указателя в 90% случаев никто не передает: это так же медленно, как все скопировать, а потом передать. Если не хочешь, чтобы в функции изменилось что-то, что не надо менять, не меняй. Можно писать даже ключевое слово const при передаче параметров, чтобы компилятор не давал тебе ничего изменить.
int myfunction(const int* bigfuckingvar)

Пнд 27 Май 2013 19:58:30
>>48862759
Стоит передавать параметры по значению (без указателя) только в том случае, если это небольшая переменная в пару байт.

Пнд 27 Май 2013 19:58:39
>>48851795
Объясню образно:
Предположим, что все данные в твоей программе (например строка с предложением) лежит на складе. Склад - это то место памяти, в котором как раз таки и лежат такие данные. Но не называй это складом, ОП, это образно. Когда нам нужны данные, нам нужен адрес склада, ряд и полка, где лежат наши данные. Так вот указатель как раз таки содержит эту информацию. По сути ты можешь присваивать указателям разные адреса и путешествовать по складу и воровать данные, но забудь пока что это.

Пнд 27 Май 2013 20:00:16
>>48862450
Т.е. если я не захочу менять с, то мне нужно будет написать const int* c?

Пнд 27 Май 2013 20:02:21
>>48862864
Но ведь можно без указателей обойтись, в яве например их нет и все хорошо. Нахуя обязательно сохранять эту поебень в языке?

Пнд 27 Май 2013 20:04:29
>>48862943
Копии разные бывают, можно копировать только часть объекта, можно ждать до момента изменения и только тогда копировать. Для этого всего уже нужны указатели.

Пнд 27 Май 2013 20:04:41
>>48862943
>Почему звездочка после int, а не перед переменной?
Во-первых, это не важно, стандарт разрешает обе записи, во-вторых, мне, как и многим другим, понятнее такая запись - она означает "указатель на int", то есть это такой тип переменных.
>Т.е. если я не захочу менять с, то мне нужно будет написать const int* c?
Не хочешь - не меняй, зачем тебе лишние языковые конструкции? Если пишешь enterprise-код, тогда может потребуют таких изворотов.

Пнд 27 Май 2013 20:04:43
>>48862943
>Почему звездочка после int, а не перед переменной?
Компилятору похуй на это, ставь, где хочешь.

>Т.е. если я не захочу менять с, то мне нужно будет написать const int* c?
Да. Если ты потом попытаешься поменять содержимое c внутри функции, у тебя программа просто не скомпилируется. Это чтобы компилятор следил за твоими кривыми руками, больше ни для чего.

Пнд 27 Май 2013 20:06:01
>>48862629
Это для целых чисел.

Пнд 27 Май 2013 20:06:22
>>48863033
А вот были бы указатели - не нужен был бы сборщик мусора. Или тебя устраивают подвисания каждую секунду?

Пнд 27 Май 2013 20:07:25
>>48863148
Зато если ты напишешь

int* a, b;
*a = 1;
*b = 2;

компилятор обидится.

Пнд 27 Май 2013 20:07:31
>>48863148

>она означает "указатель на int", то есть это такой тип переменных

int* a, b;
a = b;


Попробуй, ещё захочешь.

Пнд 27 Май 2013 20:07:49
>>48863279

Сука.

Пнд 27 Май 2013 20:08:03
>>48852155
Обосрался с дегенерата. Будто весь мир программирования ограничен твоей ебучей матрицей. А вообще, я вот так вот сортирую матрицу, например, паскалебыдло высрало кирпичи, увидев мой лихой проход по памяти.
for (int j = 0; j < h*w - 1; j++)
for (int i = 0; i < h*w - j - 1; i++)
if ( ((matrix + i/w) + i%w) >
((matrix + (i + 1)/w) + (i + 1)%w))
{
Swap(((matrix + i/w) + i%w),
((matrix + (i + 1)/w) + (i + 1)%w));
}

Тоже-первокурсота-кун

Пнд 27 Май 2013 20:08:47
>>48863227
А вот был бы сборщик мусора, не пришлось бы делать виртуальные деструкторы в каждом ебаном классе. Хотя если говорить о си, то там все просто замечательно, указатели няшные.

Пнд 27 Май 2013 20:09:04
Анон, а как технологии и фраемворки осваивать? Нифига понять их не могу.

Пнд 27 Май 2013 20:09:17
>>48863288
Чудила ты, я про запись сказал, а ты мне кодом тычешь. Ты же наверное даже не задумался, что я все переменные пишу со своим типом?

Пнд 27 Май 2013 20:10:02
>>48863148
Ну вот смотри. У меня есть матрица. Нужно получить 3 матрицы таким образом: в данной матрице меняем 1 и 3 элементы местами с 2 и 4, в данной матрице меняем 1 и 2 элементы на 3 и 4, и в данной матрице 1 и 4 на 2 и 3. Т.е. у нас есть 3 разные функции, которые последовательно выполняются. Как мне передать через указатель данную матрицу, чтобы в процессе этих функция она не изменялась?

Пнд 27 Май 2013 20:10:24
Лолки.

int main()
{
int *a, n=10, i;
a = new int [n];
for(i=0; i<n; i++)
{
a[i] = i;
}
for(i=0; i<n; i++)
{
cout << i[a] << endl;
}
return 0;
}

Пнд 27 Май 2013 20:10:30
>>48863377

>я все переменные пишу со своим типом

Ох, прости, как же я мог забыть.

Пнд 27 Май 2013 20:10:30
>>48863313
Обосрался с разметкой.жпг

Пнд 27 Май 2013 20:11:09
>>48863033
На самом деле, в языках типа Java и C# переменных нет, а не указателей. Каждая переменная там работает и как переменная, и как указатель. Для int myfunc(int* a) в том же C# просто есть еще одно ключевое слово:
int myfunc (ref int a).

Вообще, в ВУЗах учат сначала C++ из-за того, что не во всех языках творится такая казуальщина, как в Джаве. Привыкнешь к готовым библиотекам и сборщикам мусора, и не смолжешь писать ни на чем больше. Это как учится ездить сразу с автоматической коробкой - потом на ручной не сможешь.

Пнд 27 Май 2013 20:12:52
>>48863444
Писать нужно всегда как можно понятнее, я скажем могу понять что там написано, но если бы ты не выебывался, я бы понял это за полсекунды, а не вглядываясь в эту поебень. Алсо, у тебя со сложностью там пиздец просто, тебя препод за такое не назвал мудаком?

Пнд 27 Май 2013 20:13:13
>>48863479
Ручка нинужна.

Пнд 27 Май 2013 20:13:40
А нахуя нужны гет и сет?

private date m_BirthDate;
...
public date BirthDate
{
get
{
return m_BirthDate;
}
set
{
if ((value > today()) // дата рождения больше текущей
((today() - value) > 150)) // столько не живут
throw new Bad_Age(value);
else
m_BirthDate = value;
}
}

Пнд 27 Май 2013 20:13:50
<sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup><sup>idi nahui, platina</sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup></sup>

Пнд 27 Май 2013 20:14:16
>>48863435
Быдлостудия это скомпилировала?

Пнд 27 Май 2013 20:15:29
>>48863565
Двачую этого. Сегодня только на Хабре выложили анализ кода idTech4. Кармак - ебаный гений, но при этом его код прочитает даже первокурсник.

Пнд 27 Май 2013 20:15:55
>>48863648
Хз, колблокс же.

Пнд 27 Май 2013 20:16:10
>>48863620
Инкапсуляция.
> Типобезопасность

Чтобы писать на 5 строк больше. Один из самых адовых пиздецов из плюсов.

Пнд 27 Май 2013 20:16:35
>>48863722
А ты код дума глядь, удивишься.

Пнд 27 Май 2013 20:17:24
>>48863620
Для соблюдения инкапсуляции. В get и set можно контролировать, что ты суешь в свой объект. Хотя часто на это забивают и делают переменные публичными, и не всегда это плохо.

Пнд 27 Май 2013 20:17:32
>>48863648
А почему бы и нет, все по стандарту же кажется. какой язык такой и стандарт

Пнд 27 Май 2013 20:18:05
>>48863828
Всё. Это я упоролся.

Пнд 27 Май 2013 20:18:29
>>48863749
>из плюсов
Што?

Пнд 27 Май 2013 20:18:59
>>48856371
тут можно ссылк, или глобально матрицу и прочие костыли. но да, на самом деле это все указатели.

Пнд 27 Май 2013 20:19:05
>>48863766
А что там с кодом Дума?

Пнд 27 Май 2013 20:19:28
>>48863818
А я всегда либо делаю переменные публичными, либо локальные внутри объектов леплю. Заметил что тру кодеры со стажам лепят гетосет везде и для всех переменных пишут var.

Пнд 27 Май 2013 20:20:07
>>48863420
1 2
3 4

int** MySHLUHA1(int** Matrix)
{
int** temp = new int*[2];
for(int i=0; i<2; i++)
temp = new int[2];

for(int i=0; i<2; i++)
for(int j=0; i<2; j++)
temp<em>[j]=Matrix<em>[j];

swap(temp[0][0], temp[1][0]);
swap(temp[0][1], temp[1][1]);

return temp;
}

void main()
{
<ENTER MATRIX HERE>
SHLUHA1 = MySHLUHA1(Matrix);
SHLUHA2 = MySHLUHA2(Matrix);
SHLUHA3 = MySHLUHA3(Matrix);
}

Вопросы?
</em></em>

Пнд 27 Май 2013 20:20:28
>>48863227
Тебя видимо устраивает тормозная аллокация сегментированной памяти.

Пнд 27 Май 2013 20:21:33
>>48863943
var - это сомнительное удобство, которое делает код нечитабельным. Тип переменной определяется по присвоенному значению, и все.

Пнд 27 Май 2013 20:22:15
>>48863883
Ты на си пишешь геттеры? Ну ладно. Суть в том, что в нормальных языках нет такой проблемы как в плюсах с этими геттерами, а в плюсах надо блеять руками нахуярить их в хедерах (4 строки), в исходниках (6+ строк). Это даже круче виртуального деструктора.

Пнд 27 Май 2013 20:22:47
>>48864063
>удобство, которое делает код нечитабельным.
Во во. Скачал как-то опенсорс на свою голову, день потратил - нихрена не понял.

Пнд 27 Май 2013 20:25:15
>>48864063
Ну если ты именуешь их peremennayaOdin, peremennayaDva, peremennayaTri, ..., то действительно какая-то хуйня получается.

Пнд 27 Май 2013 20:26:05
>>48863983
Зачем указатель на указатель? Что значит new int* и new int?

Пнд 27 Май 2013 20:26:08
>>48858616
> Возможно, я займу твое место, лол
А вот с этим у типчегов наподобие ОПа заминочка выйдет - в отрасль берут за знания и умения анализировать, а не за корочку, как у гуманитарошлюх.
мимо начальник отдела разработки ПО, образование среднее

Пнд 27 Май 2013 20:27:11
>>48864258
Гугл рикамендует писать foo_, foo(), set_foo(). Гораздо понятнее чем var в начале, я считаю.

Пнд 27 Май 2013 20:29:14
>>48864306
Чем там у тебя абстрактный класс от интерфейса отличается, анализатор?

Пнд 27 Май 2013 20:29:56
>>48864258
Просто потом в чужом коде не всегда можно понять, что там за переменная. Хуйня, сделанная для тех, кто сам не знает, какие типы он использует.

Пнд 27 Май 2013 20:32:16
>>48863943
так в шарпе делают, ибо фен-шуй(лень объяснять школьникам)
при чем тут это ваше с/с++?

Пнд 27 Май 2013 20:32:49
>>48864519
Быдло в вывод типов не может. Хуйня как раз сделана для тех, кто про типы все знает, а кто не знает - тот дрочит трехэтажную залупу из параметризованного говна.

Пнд 27 Май 2013 20:33:19
Суп, бэ. В софтаче полтора анона, поэтому спрошу здесь. Я изучаю систему Виндус уже пару месяцев и не могу до сих пор понять: НАХУЯ НУЖНЫ ЕБАНЫЕ ЯРЛЫКИ? Поясни мне, пожалуйста, по хардкору, анон-пользователь.

Первоспермовор-кун

Пнд 27 Май 2013 20:33:23
>>48864304
Указатель на указатель - это массив массивов. Моя матрица двумерная - значит состоит из одномерного массива одномерных массивов. new int*[2] - массив указателей(читай, массив массивов) из двух элементов, new int[2] - массив из двух элементов. Таким образом, для отображения в памяти двумерной матрицы я использую три массива: два массива целых чисел по два элемента, и массив указателей на эти массивы, тоже из двух элементов.

Массив Массивович Массивов

Пнд 27 Май 2013 20:33:32
>>48864476
у меня декораторы, метаклассы, деферреды, протоколы, фабрики протоколов короче гвидопых, интерфейсов искаропки нету, zope.interface выручает зело правда, ну и и самый лучший на свете асинхронный фрейм

Пнд 27 Май 2013 20:34:26
>>48864626
я про свойства(геттер/сеттер по вашему) и динамическую типизацию(вар по вашему) если что

Пнд 27 Май 2013 20:34:59
>>48864679
Что бы не кидать данные на рабочий стол.

Пнд 27 Май 2013 20:36:02
>>48864770
Но я и так ярлыки кидаю на рабочий стол, почему тогда просто программы не кидать на него?

Пнд 27 Май 2013 20:36:26
>>48864700
мы за тебя рады очень-очень. ты нам на базовый вопрос любому джуниору на собеседовании ответь сначала, а потом рассказывай какой ты крутой.

Пнд 27 Май 2013 20:36:54
>>48863363
А ведь серьёзно, как с подобным разбраться?

Пнд 27 Май 2013 20:37:59
>>48864685
Почему начальная матрица не изменяется?

Пнд 27 Май 2013 20:38:09
>>48864819
Что бы не забивать системный диск.

Пнд 27 Май 2013 20:38:50
>>48864867
а надо просто код писать. и вдумчиво читать.
а то книги почитывают по диагонали, ничего не понимают, а потом ноют.

Пнд 27 Май 2013 20:38:51
>>48864867
Читать статьи на хабре/прочих, читать документацию, пробовать писать. Любой вопрос задавать в гугл, а не на хиккач.

Пнд 27 Май 2013 20:39:15
>>48864658
Когда ты пишешь свою библиотеку, отмазка "вы быдло, разбирайтесь сами в моих писульках" не прокатывает.

Пнд 27 Май 2013 20:41:01
>>48851795
Поясню по хардкору. Указатели созданы для работы с памятью. Тип указателя определяет количество байт для индексирования памяти или для инкрементирования. Запись ptr[5] однозначна (ptr + 5). Тебе нужно создавать двумерную динамическую матрицу, как я понял. Используй оператор new или функцию malloc.
Второкурсота-кун_C#-бог

Пнд 27 Май 2013 20:41:27
>>48864939
А должна? Чтобы что-то изменялось, нужен оператор типа Matrix = huita_iz_pod_konya, у меня таких в коде нет. Вообще, исходная матрица каждый раз копируется, а затем изменяется, результат функции - новая матрица, в новом месте памяти.

Пнд 27 Май 2013 20:41:31
>>48851795
не знаю было или нет, работа с указателями может мало отличаться от работы с массивами(например, ты можешь создать указатель на ячейку памяти, а уже потом выделить необходимую тебе память - типо динамически ок да?). Ну и создание односвязных, двусвязных, кольцевых списков происходит через указатели насколько я помню.

Пнд 27 Май 2013 20:42:42
>>48865113
и шо прям таки бог? тут у нас первый бог про разницу между абстрактным классом и интерфейсом не смог, может ты сможешь?

Пнд 27 Май 2013 20:43:22
МИНУТОЧКУ!
Какой самый легкий язык программировании?

Пнд 27 Май 2013 20:43:46
>>48865113
>функцию malloc
Как там в 80-х?

Пнд 27 Май 2013 20:44:18
>>48864994
Отличная мысль кстати.

Пнд 27 Май 2013 20:44:32
>>48865195
Интерфейс определяет только набор методов, а абстрактный класс содержит чисто виртуальные функции и может содержать данные.
Мимо-первокурсник.

Пнд 27 Май 2013 20:44:43
>>48865238
джава, шарп. но не легкие, а с "низким порогом вхождения".

Пнд 27 Май 2013 20:44:49
>>48865238
Любой, в котором нет указателей и есть сборщик мусора.

Пнд 27 Май 2013 20:44:55
>>48865238
Похапе

Пнд 27 Май 2013 20:45:43
>>48865238
Ассемблер. Всего 20-30 ключевых слов. Любой другой в кучу раз сложнее - какие-то типы, какие-то классы и объекты, операторы-хуераторы.

Пнд 27 Май 2013 20:45:57
>>48865291
вери гуд, а еще? в шарпе есть одна самая важная штука, про которую ты не упомянул.

Пнд 27 Май 2013 20:46:04
>>48864700
Сразу видно питушка без образования.

Пнд 27 Май 2013 20:46:19
>>48852427
Зачем копировать что-то в новый блок? мимопроходил

Пнд 27 Май 2013 20:46:20
>>48863435
int main()

  {

  int *a, *b, *c, n=10, i;

  a = new int [n];

  b = a;

  c = a + n;

  i ^= i;

  for(;;)

    {

    *a++ = i++;

    if(a == c)

      break;

    }

    a = b;

  for(;;)

    {

    cout << *a++ << endl;

    if(a == c)

      break;

    }

  delete[] a;

  a = 0;

  return 0;

}

Пнд 27 Май 2013 20:48:07
>>48863444.
В шарпе еще не ковырялся, что поделать.

Пнд 27 Май 2013 20:48:44
>>48865131
Если матрица каждый раз копируется, то зачем указатели? Можно было просто передавать саму матрицу. Разве нет? Или я что-то неправильно понял?

Вот смотри как я понимаю, мы вводим матрицу Matrix. Ты передаешь все элементы из нее в каждую функцию, т.е. делаешь тоже самое, что и без указателей, но кода у тебя больше. А если написать const int* Matrix, то всей той хуйни с массивами массивов не понадобилось бы. Можно было бы просто temp=Matrix и свапать.

Пнд 27 Май 2013 20:53:36
>>48865113
Ты то мне и нужен. Как скопилировать полный exe-файл, а не что бы он во фраемворках установленных в винде нуждался?

Пнд 27 Май 2013 20:54:44
>>48865355
Как кстати на асме интерфейс делается?

Пнд 27 Май 2013 20:55:03
>>48865735
Через поток?

Пнд 27 Май 2013 20:55:31
>>48863435
Что за int *а? Для чего звёздочка?

Пнд 27 Май 2013 20:55:55
>>48865509
Ты немного запутался. Когда я делаю MySHLUHA1(Matrix), копируется не сама матрица, а указатель на первый элемент чего бы то ни было. Matrix - переменная типа int**, а такая переменная содержит число размером 32 бита(чаще всего), вот именно это число и копируется. Это число есть адрес в памяти первого элемента массива указателей. Я в функции формирую новую матрицу размером со старую, а затем копирую туда все значения элементов из исходной. Потом тормошу копию - меняю местами эл-ты 1 и 2 с эл-тами 3 и 4 соответственно. Возвращаемое значение функции - число, адрес в памяти первого элемента массива указателей новой матрицы(той, которая копия с тормошением).

Массив Массивович Массивов

Пнд 27 Май 2013 20:56:34
МИНУТОЧКУ!
>>48865355
А среда разработки? Юзал только Визуал Студию

Пнд 27 Май 2013 20:56:45
>>48865812
Я навичёк. Просто у меня exe получается 20кб и не работает в виртуал бокс.

Пнд 27 Май 2013 20:56:58
>>48865735
если ты о .нет/вижуал с++ рантайм то никак.
они не просто так там установлены.
можно создать инсталлер, который установит/предложит установить нужные фреймворки, если их нет.

Пнд 27 Май 2013 20:57:54
>>48865900
шарпобоги юзают только студию, ибо она крута.

Пнд 27 Май 2013 20:57:57
>>48851795
>В программаче полтора анона
Ты вообщем какие то разделы еще посещяаешь кроме богомерского бэ?

Пнд 27 Май 2013 20:58:07
>>48865369
Интерфейс может наследоваться скольки угодно классами.
тот_самый_второкурник_C#-бог

Пнд 27 Май 2013 20:58:16
>>48865795
В основном паяется из подручных материалов, а что?

Пнд 27 Май 2013 20:58:56
>>48858379
ТЕМУ МОЖНО ЗАКРЫВАТЬ

Пнд 27 Май 2013 21:01:39
>>48865917
Что-то хреново как-то. В билдере с++ слепил и запускай где хочешь.

Пнд 27 Май 2013 21:01:59
>>48865992
верно.
ну нужно бы добавить, что если ты наследуешься от класса, то только от одного, а интерфейсов может быть много(но не сколько угодно на самом деле)
а почему же так? что плохого может быть, если ты наследуешься от нескольких классов?

Пнд 27 Май 2013 21:02:09
>>48866041
Это не я писал.

ОП==хуй

Пнд 27 Май 2013 21:02:22
>>48865992
Точнее класс может наследовать несколько интерфейсов.
Поправил себя

Пнд 27 Май 2013 21:02:59
>>48866217
шарп конечно не даст наследоватся от многих классов, а например в с++ чем это чревато?

Пнд 27 Май 2013 21:04:53
>>48863631
Сасай.

Пнд 27 Май 2013 21:06:29
<sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub><sub>ёбаный сургут</sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub></sub>

Пнд 27 Май 2013 21:06:51
>>48866195
ну слепи мне в билдере аппликуху которая будет работать с сокетами/базой/многопоточностью за пару часов.
во фреймворке все это уже реализовано ;)

Пнд 27 Май 2013 21:06:53
>>48866217
Ад и содомия может получиться. Допустим есть к А и В. От них наследуем класс С. При наследоновании конструкторов, один конструктор затирает другой. Точнее затираются данные в этом конструкторе.

Пнд 27 Май 2013 21:07:29
[/sub]ху<sub>[/spoiler]</sub>

Пнд 27 Май 2013 21:09:02
>>48866435
Да пофиг :) Я же пользоваться ими нихрена не умею, я ведь нуб

Пнд 27 Май 2013 21:09:07
>>48866226
Ты все еще не понял. Никакого копирования матрицы целиком не происходит при передаче в функцию, потому что всегда передается адрес первого элемента. В твоем случае const int* Matrix - число, которое нельзя изменять, являющееся адресом переменной или первого элемента одномерного массива целых чисел. Все. Больше никакой информации ты в функцию не передаешь. И именно эта информация(адрес первого элемента массива) будет копироваться, или не будет копироваться, в зависимости от способа передачи. И если ты сделаешь temp = Matrix, то затем любое temp[] = будет изменять память по адресу Matrix.

Массив Массивович Массивов

Пнд 27 Май 2013 21:12:09
>>48866439
ой-вей, и шо всегда затирает? и никак нельзя наследоватся от двух классов, нет мультинаследования? не совсем так.
кака будет если А и Б оба унаследованы от класса ХУЙ(общий предок)
получится так называемый "магический бриллиант"

Пнд 27 Май 2013 21:14:23
>>48866672
XYI
/\
A B
\/
C
вот так вот будет кака

Пнд 27 Май 2013 21:14:34
>>48866541
Ну так, а если возвращать temp, оно разве не будет уже в новой ячейке памяти? И раз у меня стоит const, то разве в основной программе изменится начальная матрица? Или, чтобы сделать так, как я хочу, т.е. не изменять начальную матрицу, то нужно делать так, как ты показал? А если у нас неебически огромный тяжелый массив?

Пнд 27 Май 2013 21:17:03
>>48866672
Точно. Ты прав. Я это не учел. Ты отлично шаришь в теме. Тот самый магический бриллиант получился у меня на лабе. В трансе и непонимании была молодая преподша.

Пнд 27 Май 2013 21:21:15
>>48866930
это должны рассказывать на лекциях если ты на ИТ специальности, может еще расскажут
за это и не люблю плюсы.
нужно все время думать о куче мелочей, памяти, и тд и тп, а не о поставленной задаче.
шарп мое все.
есть конечно задачи где без плюсов не обойтись, но... если можно обойтись, то лучше обойтись :)

Пнд 27 Май 2013 21:22:33
>>48851795
Сьеби из профессии, быдло.

Пнд 27 Май 2013 21:24:03
>>48866808
Мне реально нужна бумага, чтобы все объяснить правильно. Если живешь в ДС2 - можем встретиться, объясню так, что препод хуже будет знать, чем ты.
1) У тебя const стоит к чему? К адресу первого элемента массива. Он никак не изменится. Адрес. Не изменится. А содержимое - ДА ЗАПРОСТО.
2) Чтобы не менять начальную матрицу, нужно менять ее копию. Чтобы эту копию удержать - нужно ее создавать самому, иначе выход из функции ее убьет.
3) temp - адрес первого элемента копии. Это число. Оно лежит в определенной ячейке памяти у функции, затем передается куда надо, ячейка памяти при этом удаляется.

Пнд 27 Май 2013 21:28:24
>>48851795

А что такое указатели? Где указатели? Ничего не знаю, идите нахуй. Си быдло соснулей.

Java-кун

Пнд 27 Май 2013 21:28:34
>>48865113 -тут на пикче мой быдлокодинг по созданию интерпритатора. Делаем на С++ с библиотекой STL, делаем уже давно. От ошибок и переусложненного синтаксиса хочется плакать кровавыми слезами. Год как занялся C#, купил новое издание Троелсена, изредка почитываю Рихтера. Изучаю WPF. Хочу создать, что-нибудь для шиндовса с использованием WinAPI. Ну например просмотр удаленных файл жесткого диска. А ты няша. Добра тебе. Надеюсь именно у тебя все получиться.

Пнд 27 Май 2013 21:33:55
>>48867308
Я ушел за табаком, не проебите тред за час. Приду, отвечу на вопросы, соберу контакты, договорюсь о встрече.

Массив Массивович Массивов

Пнд 27 Май 2013 21:37:13
В треде орудует программист-педофил, жители ДС-2 - будьте осторожны!

Пнд 27 Май 2013 21:38:23
>>48868126
>Breaking News!!!

Пнд 27 Май 2013 21:46:55
>>48867308
Живу, к сожалению в мухосрани. Можем по (скайпику/почте)+онлайн документ.
2)Но если у нас пиздецкакойздоровый массив, то это будет аналогично, если мы в функцию передадим int Matrix;, разве нет?
3)

Пнд 27 Май 2013 21:52:50
>>48868635
Похоже ты нихуя не понил, что тут тебе писали. В функцию целый массив ты передать ну никак не сможешь. Ты передаешь только указатель на первый элемент. Если в функции захочешь воспользоваться sizeof по отношению к этому массиву, он покажет стабильно размер первого элемента.

Пнд 27 Май 2013 21:58:56
>>48868947
int wtf(int a)
{
a[1]/=2;
}
void main()
{
int a[10]={4, 3, 2};
wtf(a);
for (int i=1; i<=10;i++)
printf("%d", a);
}
Вот здесь я передал в функцию именно указатель, а не весь массив передал в функцию?

Пнд 27 Май 2013 22:07:33
>>48869253
Побампаю пока тред

Пнд 27 Май 2013 22:16:14
>>48869729
Бумп

Пнд 27 Май 2013 22:18:51
>>48869253
Здесь у функции аргумент - целое число. Подчеркиваю: ЧИСЛО. То есть даже не переменная, а только ее значение(или даже константа). Если ты хотел передавать массив, тебе нужен аргумент int* a. Тогда, a есть переменная, определенная внутри функции, имеющая тип "указатель на переменную целого типа", и уже в нее записывается адрес первого элемента массива а из главной программы. Замечу: АДРЕС. Не элементы массива. Не сам массив. Не хуе-мое. Только адрес, по которому можно: читать число, записывать число, читать/записывать в соседнюю ячейку(как левую так и правую). При этом твоей функции достается КОПИЯ этого самого адреса, и если ты его изменишь - с массивом в основной программе ничего не случится. Когда ты добавишь const, я, честно говоря, не знаю точно, что произойдет. Предполагаю, что тебе будет запрещено даже пытаться изменять этот адрес. НО НЕ ТО, ЧТО ЛЕЖИТ В ПАМЯТИ ПО ЭТОМУ АДРЕСУ. То есть массив ты сможешь менять все также.

Пнд 27 Май 2013 22:19:04
>>48869253
Именно. В аргументе функции int *a Допиши в wtf sizeof(a), увидишь 4 8.

#include "stdio.h"

int wtf(int *a){
printf("SIZEOF(a) in func wtf = %i\n", sizeof(a));
}

int main(void)
{
int a[5]={4, 3, 2, 1, 5};
wtf(a);
for (int i = 0; i < sizeof(a)/sizeof(int); i++) printf("%i\n", a);
printf("SIZEOF(a) in func main = %i\n", sizeof(a));
}

Пнд 27 Май 2013 22:19:40
>>48869253
Нет, ты передал непойми что (у тебя не скомпилируется)
int wtf(int *a)
А вот так можно передать указатель.

Пнд 27 Май 2013 22:57:22
>>48851795
представь, что ты предатель Родины и и тебе надо передать пиндоскому шпиону схемы лады-калины пятого поколения. Ну и взамен получить 30 сребренников. Договорились встретиться на вокзале, в толпе, чтобы не палиться.

Пнд 27 Май 2013 23:00:53
>>48872388
так вот, вместо того чтобы передавать бабосы и схемы из рук в руки, вы кладете шняги в камеры хранения, в разные ячейки, естественно. И обмениваетесть только номерками. Вот, блядь, номерки и есть ебучие указатели. Доступно объяснил?

Пнд 27 Май 2013 23:09:04
>>48869253

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

Пнд 27 Май 2013 23:20:16
Мимокрокодил в треде. Как компьютер понимает что это указатель на int, например, а этот на double?

Пнд 27 Май 2013 23:23:30
>>48873533
Компьютер - никак. Понимает компилятор, и проверяет эту херню на стадии компиляции. И да, кого ты все-таки имеешь ввиду, когда говоришь "компьютер понимает"?

Пнд 27 Май 2013 23:27:15
>>48873533

ты это сам пишешь в определении функции.

Пнд 27 Май 2013 23:27:58
чем ссылка отличается от указателя?

Пнд 27 Май 2013 23:28:57
>>48872388
>передать пиндоскому шпиону схемы лады-калины пятого поколения. Ну и взамен получить пиздюлей

пофиксил

Пнд 27 Май 2013 23:33:12
>>48873714
Ну компилятор, компилятор. Тогда ещё пара вопросов. Как это все таки происходит? Вот есть есть указатель, который хранит в себе адрес ячейки памяти, я правильно понимаю? Так как отличаются разные ячейки разного объёма? И ещё вопрос. Вот нахуячил я в си свою хуйню, и запускаю её. Если я не перед закрытием не освобождаю память, то получается моя память постепенно засерается?

Пнд 27 Май 2013 23:35:13
Блять, есть кто то кто объяснит чем ссылка отличается от указателя? Заебался спрашивать

Пнд 27 Май 2013 23:35:53
>>48874179

В процессе работы память никак не классифицируется. Над выделенными блоками выполняются разные операции в зависимости от их типа. Целые числа складываются, например, или с плавающей точкой. Это делает компилятор. Итоговый код просто выполняет инструкции и все. При завершении приложения память автоматом чистится. Но в процессе работы засирается, да.

Пнд 27 Май 2013 23:36:42
>>48874287
по факту ничем, это просто термины чтобы долбоебы усваивали лучше.

Пнд 27 Май 2013 23:42:02
>>48874179
Методом обращения к памяти.
mov eax, dword ptr [0x400000] засунет в регист eax 4 байта из памяти по адресу 0x400000
mov ax, word ptr [0x400000] засунет в регист ax 2 байта из памяти по адресу 0x400000
mov ah, byte ptr [0x400000] засунет в регист ah 1 байт из памяти по адресу 0x400000
fld dword ptr [0x400000] засунет в стек сопроцессора число с плавающей точкой (4 байта), из памяти по адресу 0x400000
Ну и так далее. Короче говоря, тут всё упирается в ассемблер.

Пнд 27 Май 2013 23:42:41
>>48874179
Ячейки разного объема не бывают. Они все одинаковые и размером в один байт. У каждого байта в памяти есть адрес. Указатель хранит адрес первого байта переменной. Насколько я понимаю, во время выполнения различных операций(будь то сложение), из памяти извлекаются числа, используя адрес первого байта и размер переменной. Этот размер фиксирован для определенных архитектур, во время выполнения является числовой константой. Коротко: для получения числа нужен адрес и размер, из этих двух штук создается запрос в память.
Память под программы сегодня выделяется операционной системой, забирается ей же. Когда программу закрываешь, процесс умирает, вся связанная с ним память автоматически освобождается.

Пнд 27 Май 2013 23:44:42
>>48873927
Указатель прямл указывает, ссылка хранит адрес.

Пнд 27 Май 2013 23:45:22
>>48874287
Ссылка = адрес - это число, от 0 до 2^32-1, для 32-разрядных систем.
Указатель - переменная, содержащая адрес. Имеет свой адрес в памяти, как и любая другая переменная. Может изменять свое значение.

Пнд 27 Май 2013 23:46:56
http://ru.wikipedia.org/wiki/%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)

Пнд 27 Май 2013 23:47:14
>>48874658
Благодарю.
Тогда ещё один вброс, не по теме правда совсем.
Есть с++, windows forms, clr. Есть две формы, на первой таблица(datagriedview), на второй кнопка. Нажимаю на второй кнопку, на первой обновляется таблица, или если более обобщенно, как мне обратиться к чему-нибудь к первой таблице из второй формы, или как узнать в первой форме, что я нажал кнопку на второй. Знаю что в гугле есть много инфы по теме, но все на си шарп и я так ничего и не понял. С меня как обычно.

Пнд 27 Май 2013 23:49:28
>>48874811
Ты хочешь сказать, что передавая ссылку в функцию она нигде не хранится?

Пнд 27 Май 2013 23:51:29
>>48874895
Запили во второй форме ивент и подпишись на него в первой. Хотя правильней запилить отдельный класс, который будет взаимодействовать с формами.

Пнд 27 Май 2013 23:52:51
>>48875106
Чувак, я нуб, мне желательно поточнее (с кодом), и без отдельного класса.

Пнд 27 Май 2013 23:54:07
>>48874877
Спасибо аноны! Я понял!

Пнд 27 Май 2013 23:55:43
>>48875010
В моих терминах, передавая ссылку в функцию, я храню эту ссылку в указателе, который создается в стеке, там же где и все остальные аргументы функции. В чем проблема-то?

Пнд 27 Май 2013 23:56:51
>>48875327
Тогда почему ссылка нигде не хранится, если она хранится?

Пнд 27 Май 2013 23:57:29
>>48875180

Может еще и тянку твою за тебя выебать?

Втр 28 Май 2013 00:01:51
>>48875390
Давай я тебе приведу диалог, где ты меня затролил.
>Ссылка = адрес - это число, от 0 до 2^32-1, для 32-разрядных систем.
>Ты хочешь сказать, что передавая ссылку в функцию она нигде не хранится?
>передавая ссылку в функцию, я храню эту ссылку в указателе, который создается в стеке, там же где и все остальные аргументы функции.
>Тогда почему ссылка нигде не хранится, если она хранится?
Вот теперь скажи мне, где я написал, что она нигде не хранится? Я вообще ничего не сказал про передачу в функции и прочее, а ты вдруг решил за меня что-то себе придумать. Или ты хочешь сказать, числа у нас в компьютере нигде не хранятся?

Втр 28 Май 2013 00:04:05
>>48863313
Ты долбоеб. *(arr + i) - нахуя так писать? arr понятнее.

Втр 28 Май 2013 00:06:05
Заебали. Ссылка это тот же указатель, единственное его отличие от указателя - ссылка не может быть нулевой. Вот как передаётся ссылка на переменную в функцию. Пикрелейтед. Берётся адрес переменной и пихается в стек. Всё. Так же и у указателя.

Втр 28 Май 2013 00:06:37
>>48864107
Это какие 4 ты хуяришь?

Втр 28 Май 2013 00:07:07
>>48875811
Долбоеб? У ссылки не единственное отличие от указателя.

Втр 28 Май 2013 00:08:22
>>48875635
>Я вообще ничего не сказал
>Я сначала ничего не сказал
fix

Втр 28 Май 2013 00:11:39
>>48875859
С точки зрения ассемблера - никакой.

Втр 28 Май 2013 00:12:01
>>48875859
Ньюфажество - это состояние души. Ты либо конкретные вопросы задавай, либо выражай свое мнение. Пока твоего мнения никто не увидел, только нападки на чужие ответы. Какие еще отличия от указателя ты можешь назвать? Каким образом ты можешь опровергнуть приведенный скриншот?

Втр 28 Май 2013 00:14:22
>>48876071
Но мы говорим о ссылке в плюсах.

Втр 28 Май 2013 00:15:22
>>48876092
Да что мне твой скриншот. Отличия ссылки от указателя:
1) Как ты сказал, не может быть нулевой.
2) Получает значение ТОЛЬКО при инициализации.
3) Всегда определена.

Втр 28 Май 2013 00:21:32
>>48876283
Во-первых, не я сказал. Нас тут умных уже двое.
Во-вторых, ты не мог с этого начать, а не кидаться говном с умным видом? Если ты не в курсе, для этого существуют форумы с кармочкой, куда тебе бы посыпались плюсики, здесь пиздеть просто смысла нет.
В-третьих, что по твоему значит "всегда определена"?
Пока получается, что ссылка это всего-лишь константный указатель, ничего сверхъестественного нет.

Втр 28 Май 2013 00:23:21
>>48876226
А где мы начали говорить о "ссылке в плюсах"? Я что-то не заметил.

Втр 28 Май 2013 00:24:12
>>48851795
В основном для динамического выделения памяти. Спрашивай.

Втр 28 Май 2013 00:36:28
>>48876622
> Во-первых, не я сказал.
Тогда извини.

> Во-вторых, ты не мог с этого начать, а не кидаться говном с умным видом?
Это как раз тот анон сказал это с умным видом. Поэтому не мог удержаться и не кинуть говна.

> В-третьих, что по твоему значит "всегда определена"?
Смотри. Когда ты делаешь, допустим, void *huy; то у тебя он будет указывать на мусор в памяти. Или когда ты делаешь free(huy); будет тоже самое. Ссылка же получит свое значение при инициализации: int &amp;anus = ass; и всегда будет на него указывать.

Втр 28 Май 2013 00:37:32
>>48876721
Тред о си. В сях нету ссылок. Поэтому си++ (то есть я не думаю, что вопрошавший об отличиях анон будет спрашивать о джаве в си треде. хотя и похуй, что си++ отдельный от си язык).

Втр 28 Май 2013 00:40:46
>>48877495
А чем они различаются, кроме того, что в ++ классы прикрутили и фреймворки написали?

Втр 28 Май 2013 00:44:08
>>48877682
Много чем. Например тем, что сейчас у всех на слуху:
1) Как ты и сказал, классы.
2) Лямбды.
3) Исключения.
4) Ссылки.
5) Шаблоны.
6) Перегрузка функций.
7) Неймспейсы.
Плюс отличия синтаксиса для структур.

Втр 28 Май 2013 00:46:05
>>48877495
Вообще, тут и шарповцы проплывали, и джависты, так что тред получился обо всем.

Втр 28 Май 2013 00:50:26
>>48860113
Тогда ты охуеешь, я ВТ 4 курс без них всю жизнь обходился.

Втр 28 Май 2013 00:51:08
>>48877960
> это не твои посты?
Нет, я ворвался в тред уже только на ссылках.
Ну не совсем, все-таки указатель, пусть и константный, это указатель. А ссылка всегда разыменована. (Да и cosnt ptr ты можешь кастануть в ptr).

> Вообще, тут и шарповцы проплывали, и джависты, так что тред получился обо всем.
Тогда уточню, что я о плюсах.

Втр 28 Май 2013 00:51:33
>>48877855

В си вроде бы были исключения? А чем ссылки в ++ отличаются от тех, что в си?

Втр 28 Май 2013 00:56:14
>>48878230
Нет в си ни исключений, ни ссылок.

Втр 28 Май 2013 00:58:51
http://msdn.microsoft.com/en-us/library/zazxh1a9(v=vs.80).aspx

Втр 28 Май 2013 01:02:14
>>48878610
В глаза не долбись, анончик:
> The try-except statement is a Microsoft extension to the C language

Втр 28 Май 2013 01:56:39
Ладно, раз никто ничего больше не пишет, то я пошел.

C/C++-бог-2-курс-кун.


← К списку тредов