Size: a a a

2020 June 30

IK

Ilya Khudaev in С#
я тонкостях я не расскажу
источник

IK

Ilya Khudaev in С#
где-то я находил обяснение. ща поищу
источник

b

binaryRevivalRobot in С#
Tako
как может быть указатель на воид?
void* == object*
некоторый ссылочный тип данных, к которому может быть приведен любой другой ссылочный тип данных(можно int*/ClassName* вернуть и тд)
источник

b

binaryRevivalRobot in С#
да в асимптотике вроде сложного ничего нет. на хабре, кажется, были статейки по ней
источник

AZ

Alexander Zalutskiy in С#
binaryRevivalRobot
да в асимптотике вроде сложного ничего нет. на хабре, кажется, были статейки по ней
Сколько есть нотаций асимптотики?
источник

T

Tako in С#
та ничего сложного и нет,но некоторые сложности тяжело понимать т.к мало примеров
источник

T

Tako in С#
линейных примеров дохуя
источник

ШН

Шерзод Немножко Токс... in С#
Переслано от Шерзод Немножко Токс...
источник

ШН

Шерзод Немножко Токс... in С#
Переслано от Шерзод Немножко Токс...
источник

V

Voicy in С#
мне
источник

V

Voicy in С#
у
источник

T

Tako in С#
а вот log n из простых везде предлагаюти бинарный поиск
источник

b

binaryRevivalRobot in С#
Alexander Zalutskiy
Сколько есть нотаций асимптотики?
ты про эти сигмы/хуигмы? я не спец в этом. просто смогу определить сложность какого-то алгоритма
источник

T

Tako in С#
а еще ведь там n log n etc
источник

b

binaryRevivalRobot in С#
Tako
а вот log n из простых везде предлагаюти бинарный поиск
везде, где деление на два- логарифм
источник

IK

Ilya Khudaev in С#
Tako
как может быть указатель на воид?
Для примера, в 11: *((int*)p) = 20;

В памяти компьютера все представлено целыми числами. В лучшем случае, точно, в худшем - приближенно. Эти числа хранятся в памяти/регистрах процессора. Регистры имеют размер (зависит от архитектуры), например 32 или 64 бита. Нельзя сослаться (указать) на "середину"ячейки памяти или регистра, только на начало (указатель указывает на самый первый байт ячейки).

Чем больше размер регистра, тем большее число в него можно записать: в 64 бита больше, чем в 32, в 128 - больше, чем в 64.

Маленькое целое число, например, 20 можно записать в любой регистр, начиная с размера 8 бит. И установить оставшиеся неиспользованные биты в 0.

Проблема в том, что при записи в оперативную память, неизвестно, как именно она была распределена: был выделен под переменную 1 байт (тип char) или, например, 4 (тип long). Аналогично, при чтении из памяти, необходимо знать сколько байт следует прочесть. Этот размер необходимо задать компилятору явно - через тип указателя.

Указатель на char означает, что переменная, которую адресует указатель, занимает один байт, указатель на long - 4 байта (на 32-битной машине), указатель на пользовательский тип (struct MY_STRUCT) будет использовать размер sizeof(struct MY_STRUCT).

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

Если имеется ввиду void (с маленькой буквы), то он используется всюду, где нужно сказать "указатель на область памяти, заранее неизвестного размера". В этом случае размер, при необходимости, должен быть задан отдельно. Иными словами, void* - это псевдоним для "какой-то указатель".

Например, библиотечная функция memcpy(), копирующая область памяти, не может знать заранее, тип/размер копируемого объекта, поэтому ее прототип void* memcpy(void* destination,const void* source,size_t num);
источник

IK

Ilya Khudaev in С#
источник

b

binaryRevivalRobot in С#
Tako
а еще ведь там n log n etc
n — константа. на нее похуй. одно семейство
источник

T

Tako in С#
binaryRevivalRobot
везде, где деление на два- логарифм
хочешь сказать return 3/2 это log n?
источник

b

binaryRevivalRobot in С#
Tako
та ничего сложного и нет,но некоторые сложности тяжело понимать т.к мало примеров
а, ну если ты про не сложные, то, наверное, как сказал Александр) но тут посоветовать уже мало что могу. в целом не читал особо книжек по программированию
источник