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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.73
Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
#1

Динамическое выделение - C++

26.08.2009, 21:56. Просмотров 2677. Ответов 44

Если кто может,дайте расшифровку этому:
C++
1
2
3
4
pprime = new long[max];
    *pprime = 2;
    *(pprime + 1) = 3;
    *(pprime + 2) = 5;
этому:
C++
1
    found = (trial%*(pprime + i)) == 0;
этому:
C++
1
2
    if(found == 0)
        *(pprime + count++) = trial;
и этому:
C++
1
delete [] pprime;
из этого кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    setlocale(0,"Russian");
    long* pprime = 0;
    long trial = 5;
    int count = 3;
    int found = 0;
    int max = 0;
 
    cout<<endl
        <<"Введите количество простых чисел которые хотите получить (минимум 4):";
    cin>>max;
    if(max<4)
        max = 4;
 
    pprime = new long[max];
    *pprime = 2;
    *(pprime + 1) = 3;
    *(pprime + 2) = 5;
do
{
    trial+=2;
    found = 0;
    for(int i = 0; i < count; i++)
    {
        found = (trial%*(pprime + i)) == 0;
        if(found)
            break;
    }
    if(found == 0)
        *(pprime + count++) = trial;
}while(count<max);
 
for(int i = 0; i < max; i++)
{
    if(i%5 ==0)
        cout<<endl;
        cout<<setw(10) << *(pprime + i);
}
delete [] pprime;
pprime = 0;
cout<<endl;
 
cin.ignore();
cin.get();
}
Просто по книге не описуются детали этих строк, сижу минут 30, не могу въехать,что они делают. Желательно было бы объяснить весь код.
Благодарю за терпение.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
novi4ok
550 / 503 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
27.08.2009, 13:39     Динамическое выделение #41
ребята, а вот скажите: зачем все это? это окно? это дерево?...
Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
27.08.2009, 15:31  [ТС]     Динамическое выделение #42
Сейчас продолжил дальше изучение этой темы про указатели на динамический масив. И в книге, очень часто встречается фраза: Разыменование указателя, разыменование ссылки,как такого примера там не приводится,просто бросается фраза - "Разыменование" . У меня уже в голове она стоит, но я её не пойму. Что такое разыменование? Дайте,если кому не сложно примерчик, маленький с разыменованием указателя и ссылки.
snake32
1354 / 997 / 129
Регистрация: 26.02.2009
Сообщений: 3,660
Записей в блоге: 5
27.08.2009, 16:13     Динамическое выделение #43
Golovastik, Разыменование указателя - это получение доступа к данным, на которые ссылается указатель, те ты записываешь\считываешь НЕ сам адрес, который содержится в перенной, а то что хранится по этому адресу. Символ * - как раз и делает разыменование.
C++
1
2
*pprime = 2; \\запись
long trial = *pprime;\\чтение
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
27.08.2009, 16:17     Динамическое выделение #44
К укзателю/ссылке можно применить операцию *
Эта операция и называется "разыменовыванием" (блин даже пальцы на клавиатуре загинаются от такого слова)

int *a;
a - указатель на целое
*a - собственно то самое целое, т.е. "разыменованный" указатель.

В общем, дурацкий термин, но другого я сам не знаю.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2009, 16:41     Динамическое выделение
Еще ссылки по теме:

Динамическое выделение памяти C++
C++ Динамическое выделение памяти
C++ Динамическое выделение памяти
C++ Динамическое выделение памяти
динамическое выделение памяти C++

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

Или воспользуйтесь поиском по форуму:
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
27.08.2009, 16:41     Динамическое выделение #45
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// ptr.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
 
int _tmain(int argc, _TCHAR* argv[])
{                             
    int x=5;                  
    int *a; // а это указатель на тип int
    a=&x;   // a хранит адрес икса можешь нарисовать схему как : а ------> адрес x 
            // чтобы узнать что находится в иксе нада разименовать этот указатель
    int z = *a;
    // и вывести значение которое сохранили в переменной z
    std::cout<<z;
    return 0;
}
Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdafx.h"
#include <iostream>
 
void swap(int &x , int &y)
{
    int t=x;
    x=y;
    y=t;
}
int _tmain(int argc, _TCHAR* argv[])
{                             
  int a=10;
  int b=20;
  swap(a,b);
  std::cout<<a<<' '<<b;
  return 0;
}
по сути ссылка является синонимом переменной , видишь функция вроде бы ничего не возвращает так как имеет тип void но в то же время наши значения a и b меняются , это благодаря тому что x,y являются по сути теме же a и b поэтому то что происходит с ними в функции отражается на наших a и b отсюда и ответ который меняет значения a и b.
Yandex
Объявления
27.08.2009, 16:41     Динамическое выделение
Ответ Создать тему
Опции темы

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