Форум программистов, компьютерный форум, киберфорум
Наши страницы
alexbmd
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Массив нельзя передать как аргумент в функцию

Запись от alexbmd размещена 09.05.2019 в 17:27

Если вы напишите int x[2] в заголовке функции, то это будет эквивалентно int *x и в функцию всегда будет передаваться указатель (sizeof от переданной переменной будет таким, как у указателя). При этом размер массива, указанный в заголовке будет игнорироваться. Вы запросто можете указать в заголовке int x[2] и передать туда массив длины 3.

Однако, в C++ существует способ передать в функцию ссылку на массив, вместе с её размером:
C++
1
2
3
4
5
6
7
8
9
void r (int (&x)[5]){
  // sizeof (x) здесь равен 5 * sizeof (int)
}
void a (int (*x)[5]){
  // sizeof (x) здесь равен 8 (указатель)
}
void p (int *x){
  // sizeof (x) здесь равен 8 (указатель)
}
https://habr.com/ru/post/251091/
Размещено в Без категории
Просмотров 140 Комментарии 1
Всего комментариев 1
Комментарии
  1. Старый комментарий
    Аватар для Croessmah
    Цитата:
    C++
    1
    2
    
    void a (int (*x)[5]){
      // sizeof (x) здесь равен 8 (указатель)
    А попробуй sizeof(*x)
    Запись от Croessmah размещена 12.05.2019 в 11:17 Croessmah вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru