Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
oleg@tor1
32 / 17 / 3
Регистрация: 05.09.2011
Сообщений: 152
#1

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

24.02.2013, 17:21. Просмотров 243. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2013, 17:21
Ответы с готовыми решениями:

Перегрузка оператора вывода в С++ (для вывода данных вектора)
Как правильно перегрузить оператор вывода для вектора чтобы он выводил все данные из вектора ? Для...

Написать программу, которая должна включать функции для: - вывода шапки таблицы; - вывода данных одной строки
Написать программу, которая должна включать функции для: - вывода шапки таблицы; - вывода данных...

Написать программу на языке С + + реализующая класс содержащий поля данных и методы ввода и вывода данных
Написать программу на языке С + + реализующая класс содержащий поля данных и методы ввода и вывода...

Цикл вывода диапазона данных
Не могу понять почему не выводит минимальное значение, хотя когда тип меняю на char или на short...

Функция вывода на экран данных
Не выводится на экран сумма двух матриц. 87-88 строчки. Кто может подсказать почему? Заранее...

7
Schizorb
510 / 462 / 82
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
24.02.2013, 17:22 #2
oleg@tor1, это размер массива в байтах. То есть 100 * размер одного элемента (sizeof(int)).
1
DPS
34 / 34 / 18
Регистрация: 12.11.2011
Сообщений: 115
Завершенные тесты: 1
24.02.2013, 17:23 #3
Размер переменной int 4 байта. У вас массив из 100 таких переменных.
Посмотрите сами
C++
1
cout<<sizeof(int)<<endl;
1
oleg@tor1
32 / 17 / 3
Регистрация: 05.09.2011
Сообщений: 152
24.02.2013, 17:26  [ТС] #4
Да, точно. Спасибо! ))

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

C++
1
2
3
4
void foo(int * arr)
{
    cout << sizeof(arr); // размер указателя, а не массива
}
1
oleg@tor1
32 / 17 / 3
Регистрация: 05.09.2011
Сообщений: 152
24.02.2013, 17:50  [ТС] #8
Понятно. Еще раз спасибо. )
0
24.02.2013, 17:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2013, 17:50

Ошибка вывода данных в файл
Помогите найти ошибку. Есть программа, которая выводит массив f из р=53 строк. В первой колонке х -...

Способ вывода данных на экран
Как выбрать способ вывода данных (в файл или на консоль), чтобы при последующих вычислениях...

Ошибка вывода данных в массиве строк
Здравствуйте. Есть программа, где создается динамический массив строк, заносится туда информация...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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