Нужна помощь!

#include <iostream>
using namespace std;
void read(double *a, double *b)
{
    cin >> *a >> *b;
}
void main()
{
    double x, y;
    read(&x, &y);
    system("pause");
}

Расскажите пожалуйста подробно принцип составления этой программы, и почему нужно использовать указатели и адреса?

в функции перед переменными везде «звездочки», не знаю почему стерлось.

OtcaSindi, «звездочки» стерлись потому, что код надо в посте оформлять в виде кода, а не в виде текста. См. инструкцию над окном ввода комментария.

Указатели надо использовать потому, что в С/С++ параметры в функцию передаются по значению. Т.е. в функции доступна копия фактического параметра. Поэтому, если передавать параметр без звездочки (не адрес), то все изменения этого параметра, точнее говоря копии параметра будут актуальны только внутри функции. А после выхода из функции переменные, переданные в качестве параметров, будут иметь прежние значения.

А вот если передавать адреса фактических параметров, тогда внутри функции при изменении значений по адресу, будут изменяться значения переменных снаружи функции.

Т.е. если функция должна изменить значения фактических параметров, то передавать нужно адреса переменных (указатели) или ссылки.

void read(double *a, double *b)  // здесь указатели на переменные типа double
{
    cin >> *a >> *b;  // изменяем значения "по адресу"
}

void main()
{
    double x, y;
    read(&x, &y);    // передаем в функцию адреса переменных
    system("pause");
}

Аналогично можно сделать передачу параметров «по ссылке». Семантически ссылка — это тот же адрес, но синтаксис отличается.

void read(double &a, double &b)  // здесь ссылки на переменные типа double
{
    cin >> a >> b;  // изменяем значения переменных через ссылки на них
}

void main()
{
    double x, y;
    read(x, y);    // передаем в функцию адреса переменных в виде ссылок
    system("pause");
}

У меня возник такой вопрос, есть ли в стандартном модуле оператор, тормозящий выполнение программы на настраиваемый промежуток времени? В Паскале такой оператор был, и именовался он delay(И время ожидания в милисекундах);
Есть ли что-то подобное в С++? Даже если нет в стандартном модуле, то скажите в каком модуле есть такая функция. Заранее благодарен.

BandaMF, зависит от используемой платформы. В windows есть Sleep, в *nix есть usleep. Вообще, удобно использовать вот такой макрос:

#if defined( _WIN32 ) || defined( _WIN64 )
    #include <windows.h>   //Для windows
    #define delay_ms(x) Sleep(x)
#else
    #include <unistd.h>   //Для *nix
    #define delay_ms(x) usleep(x*1000)
#endif

Соответственно, теперь delay_ms является аналогом Pascal-функции delay.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.