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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
#1

sizeof() с массивами - C++

17.09.2012, 11:10. Просмотров 1400. Ответов 4
Метки нет (Все метки)

Почему такие результаты? Размеры у обоих массивов одинаковые а sizeof() показывает у одного 28, а другого 32
C++
1
2
3
4
5
    int a[7] = {1, 2, 3, 4, 5, 6, 7};
    int b[][2] = {1, 2, 3, 4, 5, 6, 7};
 
    cout << "sizeof(a) = " << sizeof(a) << endl;    // 28
    cout << "sizeof(b) = " << sizeof(b) << endl;    // 32
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2012, 11:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос sizeof() с массивами (C++):

Sizeof(.) или constexpr size_t tmp = sizeof(.) - C++
sizeof(...) или constexpr size_t tmp = sizeof(...) Как лучше с точки зрения производительности? правильности?

Fwrite (buffer , sizeof(char), sizeof(buffer), pFile) - C++
как записать часть массива чаров? допустим у нас arr; мне надо записать с позиции массива 500 до 600, 100 байтов как записать эту...

sizeof( char * ) & sizeof(char) - C++
Здравствуйте, не могу понять почему sizeof(char *) = 4 а sizeof(char) = 1. Ну с последним ясно , а вот с первым непойму... Может кто-то...

sizeof() - C++
Ребята,объясните пожалуйста для чего нужен sizeof()?А то в книге очень заумно написано...

Sizeof - C++
int a = { 1, 2, 3, 4 },n = sizeof(a) / sizeof(a); Битый час разбираюсь с этой строкой,но понять не могу. Мы делим массив &quot;a&quot; на...

sizeof - C++
Подскажите пожалуйста что делаю не так? в базовом классе gameElement, имеется матрица указателей на базовый класс: gameElement* arr; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
17.09.2012, 11:19 #2
Массив b имеет размер [4][2]. Если бы заполнял его правильно, то это было бы очевидным.
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
17.09.2012, 11:28 #3
Цитата Сообщение от Intel~lect Посмотреть сообщение
Размеры у обоих массивов одинаковые
не не одинаковые
второй массив развернется в
b[0][0]=1,
b[0][1]=2,
b[1][0]=3,
b[1][1]=4,
b[2][0]=5,
b[2][1]=6,
b[3][0]=7,
b[3][1]=0xcccccccc,// мусор
ты же явно указал второй размер [2]
как видишь 8 элементов по 4 байта =32 байта
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
17.09.2012, 11:46 #4
Цитата Сообщение от ValeryS Посмотреть сообщение
b[3][1]=0xcccccccc,// мусор
Недоинициализированные элементы инициализируются конструктором по умолчанию. В данном случае - нулями.
Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
17.09.2012, 12:02  [ТС] #5
Спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2012, 12:02
Привет! Вот еще темы с ответами:

Немного о sizeof - C++
Не могу найти. Вот такая форма оператора, с несколькими параметрами: sizeof (323, 43241, 555) Что она возвращает?

Operator sizeof - C++
Кто-нибудь знает как реализован этот оператор? И когда он выполняется: на уровне компиляции или во время исполнения?

Sizeof структуры - C++
Объясните, почему sizeof(test) == 24, а не 18, как я полагал ? struct test { uint64_t param1; unsigned char param2; }; ...

Sizeof глючит ? - C++
простой пример на вижуал с++2013: #include &lt;iostream&gt; using namespace std; struct MyStruct { short gg; int tt; //int...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.09.2012, 12:02
Ответ Создать тему
Опции темы

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