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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2010, 19:41   #1
Gradus
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 35
По умолчанию sizeof , rand , адрес переменных.

Спустя год опять решил попробывать изучить c++
сразу же вопросы появились:
Код:
#include <clx.h>
#pragma hdrstop
#include <iostream.h>


using namespace std;
//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
char mas[5];
int max;
scanf("%s",mas);
max=sizeof(mas);
printf("array size=%d\n",max);

for(int i=0;mas[i];i++)
cout << max[i];

         getch();
        return 0;
}
1)что не пиши ответ будет array size= 5 , а чуть ниже слово целиков появиться for знает что делает.
почему sizeof говорит изначальное количество элементов массива.По идее же и количество элементов должно было увеличиться и размер увеличиться как показывает нам for.
2)почему нужно адрес указывать,а не просто переменную
Код:
scanf("%d",&max);
3)зачем нужен rand если он не даёт рандомные числа , а всё время одинаковые,зачем нужен srand если ему нужно передавать постояноо разные числа в виде времени.Не понимаю эту спецификацию
4)дайте кто нить аську, дабы немного помагать в изучении c++
Gradus вне форума Ответить с цитированием
Старый 18.08.2010, 19:59   #2
ZaRDaK
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 197
По умолчанию

1. Ты используешь статический массив, выдаётся его размер, а не кол-во инициализированных елементов
2. Так удобнее разрабам
3. rand даёт разные числа, если его инициализировать srand (саму srand надо вызывать один раз в начале программы) - это есть псевдослучайные числа
4. 41911603\ноль\
ZaRDaK вне форума Ответить с цитированием
Старый 18.08.2010, 22:19   #3
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

2. В C без извращенст нельзя поменять переменную внешней функцией, не передав на неё указатель.
3. Не совсем случайность rand() полезна при отладки : цифры вроде бы случайны, но предсказуемы.
4. Любой каприз за ваши деньги
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 19.08.2010, 22:14   #4
Gradus
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 35
По умолчанию

Цитата:
Сообщение от ozo Посмотреть сообщение
2. В C без извращенст нельзя поменять переменную внешней функцией, не передав на неё указатель.
3. Не совсем случайность rand() полезна при отладки : цифры вроде бы случайны, но предсказуемы.
4. Любой каприз за ваши деньги
1.как обьяснили борланд кривой и c++ не должен был создать новые элементы, снизу ругаться буду.
2.Я так понял что даже стандартные функции не могут работать с внешнеми переменными, поэтому ссылочку на алресат кидаем,тогда почему массив без проблем можно передавать ?
3.мне кажется лучше будет написать функцию одну для более удобства где в зависимости от времени будет выдаваться число и промежуток будет в параметрах.Как в php: rand(0,99);

Я уже какой год пытаюсь изучать c++ и каждый раз гружу мозг, трачу время что бы на форуме всё чётко пояснить, а оказывается как всегда кривой компилятор или среда.После этого бью клаву и забиваю на c++.
Пожалуйстаааааа скажите название проги в которой можно изучать c++ спокойно по книжке, начинающему.
Скачал turbo c++ тот вообще требует прототип стандартных функций и нету файлов типа clx.h (проверял каталог)

Последний раз редактировалось Gradus; 19.08.2010 в 22:17.
Gradus вне форума Ответить с цитированием
Старый 19.08.2010, 22:28   #5
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Цитата:
Сообщение от Gradus Посмотреть сообщение
2.Я так понял что даже стандартные функции не могут работать с внешнеми переменными
Функции не могут изменить внешние переменные, не передавая указатель, это в C, в C++ есть ссылки, но scanf из стандартной библиотеки C.
Цитата:
Сообщение от Gradus Посмотреть сообщение
тогда почему массив без проблем можно передавать ?
Массив отчасти это и есть указатель
Цитата:
Сообщение от Gradus Посмотреть сообщение
3.мне кажется лучше будет написать функцию одну для более удобства где в зависимости от времени будет выдаваться число и промежуток будет в параметрах.Как в php: rand(0,99);
И всё таки, для отладки лучше не случайны генератор случайных чисел, таки дела. А не для отладки : можете использовать srand(), а затем rand(), да и в плюсах подход более универсальный, но за него тоже нужно платить =-)
Цитата:
Сообщение от Gradus Посмотреть сообщение
Пожалуйстаааааа скажите название проги в которой можно изучать c++ спокойно по книжке, начинающему.
emacs + g++ =), и да, изучите сначало стандартную библиотеку, а потом уже и к нестандартному переходите, к такому, как clx.h.
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 20.08.2010, 02:38   #6
Darth.Vader
Пользователь
 
Аватар для Darth.Vader
 
Регистрация: 04.12.2009
Сообщений: 63
По умолчанию

Цитата:
Я уже какой год пытаюсь изучать c++ и каждый раз гружу мозг, трачу время что бы на форуме всё чётко пояснить, а оказывается как всегда кривой компилятор или среда.После этого бью клаву и забиваю на c++.
Пожалуйстаааааа скажите название проги в которой можно изучать c++ спокойно по книжке, начинающему.
Скачал turbo c++ тот вообще требует прототип стандартных функций и нету файлов типа clx.h (проверял каталог)
Так, начнём с того, что паникой делу не поможешь. Всегда в IT-штучках ВСЕ первое время ловят обломы - это абсолютно нормально. Я вот когда на линуксе первый месяц сидел чуть мышь не сожрал Особенно тонкости оперирования с консолей, а сейчас жить без неё не могу.
Второе, книг по С++ полно... нет, их даже слишком полно! Многие из них откровенное говно. Иди на рутрекер, там есть куча подборок книг по с++. Из них я очень рекомендую Стивена Прата (Стивен Прата), Страуструпа, ну... разберёшься, почитай там коменты к раздачам - они не врут почти никогда. Один совет, нет, даже два: 1 - ни в коем случае не читай книги а-ля для чайников или те, что обещают всё и сразу и за короткий срок. 2 - не торопи время - сиди, вдумчиво читай, обязательно набирай примеры, делай задания и экспериментируй
Удачи.
А, да - чуть не забыл! Лучше не привыкай к трупам типа C++ Builder или старым консольным компиляторам вроде borland или turbo C++! Добро пожаловать на трекер - там на халяву визуалки есть любые, или на http://mingw.org/ - это g++ - консольный, но удобный и надёжный, да и не глючит.
Darth.Vader вне форума Ответить с цитированием
Старый 20.08.2010, 19:17   #7
Gradus
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 35
По умолчанию

что-то не понял g++ компилятор для линукса только чтоли ? для винды ничего нету ? не смог найти
Gradus вне форума Ответить с цитированием
Старый 20.08.2010, 19:36   #8
sever-42
Пользователь
 
Регистрация: 22.04.2010
Сообщений: 96
По умолчанию

mingw для windows
http://sourceforge.net/projects/mingw/files/
include <Qt>

Последний раз редактировалось sever-42; 20.08.2010 в 19:42.
sever-42 вне форума Ответить с цитированием
Старый 20.08.2010, 19:36   #9
Kill-All-N-Thrash
Пользователь
 
Аватар для Kill-All-N-Thrash
 
Регистрация: 28.07.2010
Сообщений: 43
По умолчанию

MinGw - там в комплекте и gcc и g++ и mingw32-make
mingw.org
и не забудь в path прописать папку bin установочной директории, чтобы с командной строки запускать.
Kill-All-N-Thrash вне форума Ответить с цитированием
Старый 20.08.2010, 20:41   #10
Gradus
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 35
По умолчанию

Ребят я не вашего уровня, я только только начинаю.Скачал эту программу и что дальше, где что запускать(куча файлов) ? какой path ?
Gradus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
rand в С Jasper92 Общие вопросы C/C++ 1 02.04.2010 16:01
rand VAN32 Общие вопросы C/C++ 5 07.03.2010 21:38
SizeOf выдает значение на порядок меньше. Alex Cones Общие вопросы Delphi 4 15.01.2010 21:24
rand() ????? Revenholm Общие вопросы C/C++ 7 25.04.2009 18:47
как узнать ip адрес зная mac адрес Roman Работа с сетью в Delphi 9 25.06.2007 12:39