Size: a a a

2021 February 26

CD

Constantine Drozdov in supapro.cxx
Nastya Medveda
отлично. Теперь я передаю первый array в функцию.
void myfunction(int array[]) {}
myfunction(array)

то почему в функцию приходит только указатель на первый элемент? Где остальное?
А вот это уже сишное наследие. С точки зрения языка си, запись int array[] в аргументе функции означает передачу "по указателю", а передачи массива по значению в си нет.
Если вместо этого вы будете использовать std::array<int, 5>, массив будет скопирован
источник

ID

In Dev in supapro.cxx
Пашечка
Потому что массив - это указатель на первый элемент.
Не совсем так, он decay'ит к указателю
источник

CD

Constantine Drozdov in supapro.cxx
Да, есть понятие decay для типа
источник

CD

Constantine Drozdov in supapro.cxx
Nastya Medveda
отлично. Теперь я передаю первый array в функцию.
void myfunction(int array[]) {}
myfunction(array)

то почему в функцию приходит только указатель на первый элемент? Где остальное?
Из языка Си в С++ есть особые случаи, связанные с типами в аргументах и возвращаемых значениях функции
источник

П

Пашечка in supapro.cxx
Ну, пардон, я стараюсь не усложнять начинающим жизнь) пусть лучше они разберутся, а уже потом им сказать "cake is a lie, стека и кучи не существует в стандарте, и т.д. и т.п., забудьте всё, что знали, начинайте сначала на уровне посложнее"
источник

ЕП

Евгений Попов... in supapro.cxx
Вы в общем путаете высоуровневые вещи и низкоуровневые, которые компилятор юзает
источник

LA

Liber Azerate in supapro.cxx
Евгений Попов
Что за бред нахуй?
Вот так. С++ исполняется на абстрактной машине. Понятия стека и кучи слишком низкоуровневые
источник

LA

Liber Azerate in supapro.cxx
Gevorg
кто-нибудь  в windows form понимает ?
источник

ID

In Dev in supapro.cxx
Евгений Попов
Вы в общем путаете высоуровневые вещи и низкоуровневые, которые компилятор юзает
Есть стандарт, он описан в рамках абстрактной машины, нет там ни кучи, ни стека
источник

П

Пашечка in supapro.cxx
Евгений Попов
Вы в общем путаете высоуровневые вещи и низкоуровневые, которые компилятор юзает
На высоком уровне ты не должен думать о стеке и куче, так-то
источник

ЕП

Евгений Попов... in supapro.cxx
В любом компилируемом языке локальные переменные лежат в стеке
источник

NM

Nastya Medveda in supapro.cxx
Пашечка
Потому что массив - это указатель на первый элемент.
Хорошо, но почему тогда в случае статического массива я могу итерировать по элементам не боясь выйти за пределы массива
for(int aNumber : array)

а при указателе на массив мне нужно отдельно таскать еще и размер массива?
Как такое может быть если это одинаковые объекты?
источник

AS

Anatoly Shirokov in supapro.cxx
Пашечка
Потому что массив - это указатель на первый элемент.
Это бан
источник

LA

Liber Azerate in supapro.cxx
Евгений Попов
В любом компилируемом языке локальные переменные лежат в стеке
Зависит от их типа, лол
источник

П

Пашечка in supapro.cxx
Anatoly Shirokov
Это бан
Ок :3 пните, как можно возвращаться :3
источник

LA

Liber Azerate in supapro.cxx
Liber Azerate
Зависит от их типа, лол
Например шарп. В нём на стеке лежат только значимые типы
источник

C

Chuvi in supapro.cxx
Anatoly Shirokov
Это бан
Окей. В каких случаях массив не может скаститься до указателя на 1-й элемент массива?
источник

ID

In Dev in supapro.cxx
Nastya Medveda
Хорошо, но почему тогда в случае статического массива я могу итерировать по элементам не боясь выйти за пределы массива
for(int aNumber : array)

а при указателе на массив мне нужно отдельно таскать еще и размер массива?
Как такое может быть если это одинаковые объекты?
В первом случае вы работаете с объектом типа массив, во втором - с указателем на элемент
источник

AS

Anatoly Shirokov in supapro.cxx
Пашечка
Ок :3 пните, как можно возвращаться :3
Мы проводим статопрос перед умерщвлением плоти. Кто эту дичь вам сказал про указатель?
источник

ID

In Dev in supapro.cxx
Nastya Medveda
Хорошо, но почему тогда в случае статического массива я могу итерировать по элементам не боясь выйти за пределы массива
for(int aNumber : array)

а при указателе на массив мне нужно отдельно таскать еще и размер массива?
Как такое может быть если это одинаковые объекты?
При этом вы можете сделать статический массив, привести его к указателю и потерять эту возможность
источник