Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
bobromet
24 / 24 / 1
Регистрация: 06.03.2010
Сообщений: 59
#1

Что происходит с массивом после передачи в функцию? - C++

21.05.2010, 13:06. Просмотров 476. Ответов 5
Метки нет (Все метки)

Привет!
почему после передачи массива в метод, sizeof() выдает другой результат??

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
void test(int arr[]);
 
int main()
{
    int arr[] = {3, 5, 7, 4, 1, 5, 7, 4, 1};
    cout << sizeof(arr)<<endl;  // --> 36
    test(arr);
}
 
 void test(int arr[])
 { 
     cout << sizeof(arr)<<endl;  // --> 4                  
 }
спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2010, 13:06     Что происходит с массивом после передачи в функцию?
Посмотрите здесь:

Все способы передачи статического массива в функцию C++
Размер массива при передачи в функцию C++
C++ Ошибка передачи параметра в функцию
Правильный способ передачи вектора в функцию C++
Способы передачи параметров в функцию C++
C++ Динамический массив структур (не происходит передачи и некорректно удаляется)
Два способа передачи параметров в функцию: по значению и по адресу C++
C++ Доступ по индексу после передачи дека в функцию
Особенности передачи объекта в функцию C++
Почему после передачи в функцию массива, выводятся случайные числа, если использовать *(uk++) во второй раз? C++
C++ Отличие способов передачи массива в функцию
способы передачи объекта в функцию в качестве параметра C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3030 / 2351 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
21.05.2010, 13:38     Что происходит с массивом после передачи в функцию? #2
Потому что в функцию передается указатель на массив.
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
21.05.2010, 19:10     Что происходит с массивом после передачи в функцию? #3
Особенности языка
В контексте функции main() компилятор знает что arr[] - это константный массив заданного размера

В контексте функции test компилятор знает что arr[] - это указатель на массив целых чисел (размер массива неизвестен)
скорее всего sizeof(arr) == sizeof(int*)
CheshireCat
Эксперт С++
2910 / 1238 / 78
Регистрация: 27.05.2008
Сообщений: 3,321
21.05.2010, 19:27     Что происходит с массивом после передачи в функцию? #4
odip, да оно не "скорее всего", а именно так оно и есть. Ты абсолютно прав в разъяснении.
bobromet
24 / 24 / 1
Регистрация: 06.03.2010
Сообщений: 59
21.05.2010, 20:28  [ТС]     Что происходит с массивом после передачи в функцию? #5
Aaaa.. получается это просто размер индекса.. наверно)
спасибо, прояснили!

после сишарп как то непривычно.
odip
Эксперт С++
 Аватар для odip
7151 / 3291 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
22.05.2010, 12:14     Что происходит с массивом после передачи в функцию? #6
Так если взять какой-нибудь std::vector в C++, то все будет как в C#
Yandex
Объявления
22.05.2010, 12:14     Что происходит с массивом после передачи в функцию?
Ответ Создать тему
Опции темы

Текущее время: 07:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru