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

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

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

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

21.05.2010, 13:06. Просмотров 487. Ответов 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++
Здравствуйте. template&lt;class P&gt; void Input(deque&lt;P&gt; *MyD, P s) { int i = 0; int size = MyD-&gt;size(); for (P y = s;i &lt;...

Почему после передачи в функцию массива, выводятся случайные числа, если использовать *(uk++) во второй раз? - C++
Интересует такой вопрос: почему после передачи в функцию массива выводятся случайные числа из оперативной памяти, если использовать *(uk++)...

Динамический массив структур (не происходит передачи и некорректно удаляется) - C++
Всем привет! Решил изучить динамический массив через realloc... Написал простенькую программу... Но при ее выполнении не...

Ошибка передачи параметра в функцию - C++
#include &quot;stdafx.h&quot; #include &quot;War.h&quot; int _tmain(int argc, _TCHAR* argv) { War warv(&quot;Battle&quot;); ...

Особенности передачи объекта в функцию - C++
Вечер добрый, форум! Вопрос такой. Предположим есть класс class1, и есть class2, который является наследником класса class1. Имеется...

Способы передачи параметров в функцию - C++
#include&lt;iostream&gt; using namespace std; void swap1(int x, int y) { int z; z=x; x=y; y=z; ...

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

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

после сишарп как то непривычно.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2010, 12:14     Что происходит с массивом после передачи в функцию?
Еще ссылки по теме:

Правильный способ передачи вектора в функцию - C++
Доброго времени суток, начав изучать язык столкнулся с данным вопросом (название темы), сделал это так: #include &quot;iostream&quot; #include...

Размер массива при передачи в функцию - C++
День добрый, подскажите столкнулся с такой проблемой: void masssize (char mass) { int size = sizeof(mass)/sizeof(mass); cout...

способы передачи объекта в функцию в качестве параметра - C++
Подскажите способы передачи обьекта в функцию в качестве параметра, пожалуйста

Все способы передачи статического массива в функцию - C++
Здравствуйте уважаемые форумчане. Предлагаю выложить сюда все способы передачи СТАТИЧЕСКИХ массивов в функцию, желательно с объяснениями...


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

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

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