Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

въпрос за програма на C++

Featured Replies

Още съм начинаещ в програмирането на C++ и като такъв взех,че измъдрих една програма,която сега не мога да си обясня.Тя е следната:

#include<iostream>

using namespace std;

int main(void)

{

int a[]={};

int i;

for(i=0;i<40;i++)

{

a=i+1;

cout<<a<<" ";

}

cin.get();

cin.get();

return 0;

}

Въпросът ми е:Защо след като заменя for(i=0;i<40;i++) с for(i=0;i<50;i++) програмата извежда

отново само числата до 40.Какво ограничава елементите в масива да бъдат само 40,независимо,че съм поставил по-голяма граница.

Отговорът е, че не си дал размер на масива. И то пише и маже където намери за добре! Огледай как се работи с malloc()/free i new/delete ако не ти се цъка с поинтери, оправи си декларациите.

  • Автор

Благодаря ти за бързият отговор.Разгледах функцииите за динамично заделяне на памет,но все още не ми е ясно,защо ако масивът е дифиниран по този начин(масив без фиксиран размер), в него се вкарват точно 40 стоиности.

Нима. А това работи, нищо че може да порази я други данни, я стека:

#include<iostream>

using namespace std;


int main(void)

{

 int *a = new int;

 int i;

 for(i=0;i<80;i++)

 {

  a[i]=i+1;

  cout<<a[i]<<" ";

 }

 delete [] a;

 cin.get();

 cin.get();

   return 0;

}

  • Автор

И все пак откъде идва това 40 при моя вариан на програмата :)

  • Администратор
И все пак откъде идва това 40 при моя вариан на програмата :)

Ми така се е случило. Пробвай да рестартираш компютъра и пак да я пуснеш - може да изведе и до 50. А може Windows да се усети че правиш глупости и да те плесне през клавиатурата

Въобще, в момента в който пишеш нещата по този малоумен начин разчиташ единствено на случайност, така че не търси смисъла в нея :P

  • Автор

Компилатора е "Dev C++".Рестартирванията не помагат и ефекта е същия,а на Windows изобщо не му пука за мойта програма.

  • Автор

Да прекомпилирах я и резултата го знаете.

Ми явно Дев-Спп си заделя някакво количество памет по default. Ако пробваш с unsigned char ще брои до 160.

  • Автор

Ами тогава извода е,че с тази програма може да се проверява колко памет си заделя компилатора ;) Подгответе се,защото се каня да измъдря някоя друга. :)

Ами тогава извода е,че с тази програма може да се проверява колко памет си заделя компилатора :P Подгответе се,защото се каня да измъдря някоя друга. :wors:

Браво на теб, но какъв е смисъла?

  • Автор

Ако съм разбрал правилно от твоят отговор,компилатора заделя памет за масива,толкова че в него да се вкарат 40 стойности от тип int.Това едва ли има смисъл за някой друг освен за мен,тъй като ми дава отговор на въпроса.

Регистрирайте се или влезете в профила си за да коментирате

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.