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

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

Восстановить пароль Регистрация
 
bobromet
24 / 24 / 1
Регистрация: 06.03.2010
Сообщений: 59
21.05.2010, 13:06     Что происходит с массивом после передачи в функцию? #1
Привет!
почему после передачи массива в метод, 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                  
 }
спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
21.05.2010, 13:38     Что происходит с массивом после передачи в функцию? #2
Потому что в функцию передается указатель на массив.
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
21.05.2010, 19:10     Что происходит с массивом после передачи в функцию? #3
Особенности языка
В контексте функции main() компилятор знает что arr[] - это константный массив заданного размера

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

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

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