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

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

Войти
Регистрация
Восстановить пароль
 
oleg@tor1
 Аватар для oleg@tor1
32 / 17 / 2
Регистрация: 05.09.2011
Сообщений: 152
#1

Причина такого вывода данных? - C++

24.02.2013, 17:21. Просмотров 208. Ответов 7
Метки нет (Все метки)

Простой пример. Определил размерность массива 100. Так почему sizeof выдаёт значение 400, а не 100? Любые значения множаться на 4. Это как же так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <array>
#include <locale>
#include <time.h>
using namespace std;
 
int M [100];
 
int main ()
{
    
cout << sizeof(M);
            
system("pause");
return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
24.02.2013, 17:22     Причина такого вывода данных? #2
oleg@tor1, это размер массива в байтах. То есть 100 * размер одного элемента (sizeof(int)).
DPS
 Аватар для DPS
32 / 32 / 3
Регистрация: 12.11.2011
Сообщений: 107
Завершенные тесты: 1
24.02.2013, 17:23     Причина такого вывода данных? #3
Размер переменной int 4 байта. У вас массив из 100 таких переменных.
Посмотрите сами
C++
1
cout<<sizeof(int)<<endl;
oleg@tor1
 Аватар для oleg@tor1
32 / 17 / 2
Регистрация: 05.09.2011
Сообщений: 152
24.02.2013, 17:26  [ТС]     Причина такого вывода данных? #4
Да, точно. Спасибо! ))

Добавлено через 1 минуту
Господа, подскажите функцию, которая выведет кол-во элементов массива, по типу vector.size();
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
24.02.2013, 17:35     Причина такого вывода данных? #5
Нет такой, разве что так можно:
C++
1
sizeof(M) / sizeof(*M)
oleg@tor1
 Аватар для oleg@tor1
32 / 17 / 2
Регистрация: 05.09.2011
Сообщений: 152
24.02.2013, 17:40  [ТС]     Причина такого вывода данных? #6
Спасибо!
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
24.02.2013, 17:44     Причина такого вывода данных? #7
oleg@tor1, только учти, что при передаче массива в функцию (а передается он как указатель на первый элемент) такой подход не прокатит.

C++
1
2
3
4
void foo(int * arr)
{
    cout << sizeof(arr); // размер указателя, а не массива
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2013, 17:50     Причина такого вывода данных?
Еще ссылки по теме:

Как посчитать время вывода данных? C++
Определить структуру данных, поддерживающую функции добавления, удаления и вывода элементов C++
Функция вывода на экран данных C++
C++ Ошибка в коде с признаками (свойствами) вывода данных
Разработать шаблон класса для вывода вектора данных в поток C++

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

Или воспользуйтесь поиском по форуму:
oleg@tor1
 Аватар для oleg@tor1
32 / 17 / 2
Регистрация: 05.09.2011
Сообщений: 152
24.02.2013, 17:50  [ТС]     Причина такого вывода данных? #8
Понятно. Еще раз спасибо. )
Yandex
Объявления
24.02.2013, 17:50     Причина такого вывода данных?
Ответ Создать тему
Опции темы

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