Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 25.08.2009, 20:34   #1
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
Плохо Массив

Скажите, как в этом коде,может вот этой строкой вычислятся количество элементов в масиве.
Код:
int count = (sizeof masiv)/(sizeof masiv[0]);
просто в голове как-то не укладывается.

Вот весь код:
Код:
#include <iostream>
#include <string>
using namespace std;

int main()
{
string mama = "";
setlocale(0,"");
do{
	
char* masiv[] = { "Anton","Vlad","Mefodiy","Syltan","Orangytan","Bobr","Boris", "Varfolomey"};
int count = (sizeof masiv)/(sizeof masiv[0]);
int geroy = 0;

char* molotok = "Ваш счастливый герой  -----> ";
cout<<endl<<"Введите героя с 1...6 ---> ";

cin>>geroy;
if(geroy>=1 && geroy<=count)
cout<<molotok<<masiv[geroy-1];
else
cout<<"Извините, к сожалению у вас нет героя.";
cout<<endl<<endl<<"Продолжить ещё разок? Если да,введите slovo - 'rak' ";
cin>>mama;
}
while(mama == "rak"); 

cin.ignore();

cin.get();
}
Golovastik вне форума
Старый 25.08.2009, 20:41   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

sizeof massiv[0] вернет размер одного (первого) элемента массива. Т.к. здесь массив указателей на чар, то это будет 4 байта.
sizeof massiv вернет количество байт, занимаемых всем массивом. Т.к. тут 8 элементов, то 8x4 = 32 байта.

Далее делим второе на первое и получаем количество элементов - 8.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 25.08.2009, 20:58   #3
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Char - это вроде 1 байт. А зачем умножается 8 на 4?
Golovastik вне форума
Старый 25.08.2009, 21:03   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Golovastik Посмотреть сообщение
Char - это вроде 1 байт. А зачем умножается 8 на 4?
char - 1 байт, у char* - 4 байта.

Да и не важно, какой у него размер. Для того и используем sizeof, чтобы не думать о размере.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 25.08.2009, 21:40   #5
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Тоесть получается,что каждый элемент содержит 4 байта, 8 элементов, это 4+4+4+4+4+4+4+4 = 32 байта И это общее число делится на первый элемент masiv[0] который равен 4 байта,как и каждый из всех, и получаем резульат 8. Правильно? Или это не то?
Golovastik вне форума
Старый 25.08.2009, 21:48   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Golovastik
Цитата:
Тоесть получается,что каждый элемент содержит 4 байта, 8 элементов, это 4+4+4+4+4+4+4+4 = 32 байта И это общее число делится на первый элемент masiv[0] который равен 4 байта,как и каждый из всех, и получаем резульат 8. Правильно? Или это не то?
умеешь же ты вынести мозги.
ты купил яблоки, заплатил 100 р. одно яблоко стоит 10р. сколько яблок ты купил?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума
Старый 25.08.2009, 21:58   #7
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Ну, это вы с сарказмом конечно, но всё-таки дайте ответ,правильно ли размышление или нет?
Golovastik вне форума
Старый 25.08.2009, 22:04   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Golovastik Посмотреть сообщение
Ну, это вы с сарказмом конечно, но всё-таки дайте ответ,правильно ли размышление или нет?
Да. Тем не менее, про яблоки пример сюда вполне подходит.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 25.08.2009, 22:11   #9
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Просто,нужно понимать ещё, а не просто кодить. Оно может показаться смешным,но если упускать эти вопросы, можно зайти в заблуждение.
Golovastik вне форума
Старый 26.08.2009, 11:37   #10
LaptevVV
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 37
По умолчанию

Цитата:
Сообщение от Golovastik Посмотреть сообщение
Просто,нужно понимать ещё, а не просто кодить. Оно может показаться смешным,но если упускать эти вопросы, можно зайти в заблуждение.
Лучше писать так:
sizeof(массив)/sizeof(тип элемента)
В нашем случае это будет:
sizeof(massiv)/sizeof(char*)
Тогда и знать не требуется, сколько байтов занимает один элемент.
LaptevVV вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив Paul_AG Общие вопросы C/C++ 2 04.06.2009 00:53
Массив KREGI Помощь студентам 2 05.03.2009 17:35
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06
массив TheVenny Помощь студентам 1 22.11.2008 01:50
массив! Jodu Помощь студентам 2 11.01.2008 20:59