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

Неясности в теории - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывод интервального ряда в виде таблицы http://www.cyberforum.ru/cpp-beginners/thread1549851.html
Имеется информация о количестве книг, полученных студентами по абонементу за прошедший учебный год. Массив чисел: 4 интервала --------------------------------------------------------------- 2 4 4 7 6 5 2 2 3 4 4 3 6 5 4 7 6 6 5 3 2 4 2 3 5 7 4 3 3 2 4 5 6 6 10 4 3 3 2 3 ----------------------------------------------------------------
C++ Узнать сколько символов осталось во входной очереди после cin Доброго времени суток, подскажите пожалуйста как узнать, сколько символов осталось во входной очереди (скажем после неудачного использования cin). При этом cin.get() нельзя применять, ибо эти символы нужно будет еще использовать. http://www.cyberforum.ru/cpp-beginners/thread1549831.html
Узнать скорость записи в файл C++
Планирую работать с записью в файл больших объёмов. Хотелось бы узнать скорость записи. Мб для теста использовать вечный цикл и забивать файл одиночными символами и по достижении секунды выйти из него записав количество символов и выйдет результат. Ещё как ускорить этот процесс? Гуглил, что Сишные варианты работы с файлами работают быстрее, чем Плюсовые.
не работает код из книги класс C++
сейчас учусь программированию по книге и дошел до классов. суть классов немного разобрался, но почему то методы класса не работают. хотя переписал все по книге. книга джесс либерти. освой самостоятельно с++ за 21 день. компилятор visual studio 2013. П.С. это маленкий участок кода большей программы и не обращайте внимания на библиотеки и структуры. учусь 4 недели. вот код. #include...
C++ Поиск каталогов http://www.cyberforum.ru/cpp-beginners/thread1549811.html
Как реализовать функцию, находящую на диске все каталоги?
C++ Функциональный объект и подсчёт определённых значений в векторе Необходимо реализовать подсчёт количества элементов вектора, больших некоторого значения (вводится с клавиатуры), используя функтор. #include "stdafx.h" using namespace std; int i = 0; vector<int> vec_data(10); class Functor { подробнее

Показать сообщение отдельно
Rius
 Аватар для Rius
1760 / 1145 / 274
Регистрация: 25.05.2015
Сообщений: 4,072
Записей в блоге: 4
Завершенные тесты: 4
11.10.2015, 21:07     Неясности в теории
castaway, ок!
Кликните здесь для просмотра всего текста
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <stdint.h>
 
typedef struct
{
    int array[100500];
} tSt;
 
void func1(tSt a)
{
    printf("func1 by value \n");
    printf("address of argument: %p\n", &a);
    printf("data[0]: %d\n", a.array[0]);
    printf("data[1]: %d\n", a.array[1]);
 
    a.array[0] = 500;
    a.array[1] = 501;
 
    printf("data[0]: %d\n", a.array[0]);
    printf("data[1]: %d\n", a.array[1]);
}
 
void func2(tSt *a)
{
    printf("func2 by address \n");
    printf("address of argument: %p\n", a);
    printf("data[0]: %d\n", a->array[0]);
    printf("data[1]: %d\n", a->array[1]);
 
    a->array[0] = 600;
    a->array[1] = 601;
 
    printf("data[0]: %d\n", a->array[0]);
    printf("data[1]: %d\n", a->array[1]);
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    tSt data;
    
    for (int i = 0; i < 100500; i++) {
        data.array[i] = i;
    }
 
    printf("Initialized:\n");
    printf("data[0]: %d\n", data.array[0]);
    printf("data[1]: %d\n", data.array[1]);
    printf("address of data: %p\n", &data);
 
    func1(data);
 
    printf("After func1 by value:\n");
    printf("data[0]: %d\n", data.array[0]);
    printf("data[1]: %d\n", data.array[1]);
    printf("address of data: %p\n", &data);
 
    func1(data);
 
    printf("After func1 by value:\n");
    printf("data[0]: %d\n", data.array[0]);
    printf("data[1]: %d\n", data.array[1]);
    printf("address of data: %p\n", &data);
 
    func2(&data);
 
    printf("After func2 by address:\n");
    printf("data[0]: %d\n", data.array[0]);
    printf("data[1]: %d\n", data.array[1]);
    printf("address of data: %p\n", &data);
    return 0;
}


Initialized:
data[0]: 0
data[1]: 1
address of data: 0022D5A4 - адрес исходного массива


func1 by value
address of argument: 001CB278 - адрес аргумента в функции
data[0]: 0
data[1]: 1
data[0]: 500 - меняем значение, переданное в аргументе
data[1]: 501

After func1 by value:
data[0]: 0 - значение в исходном массиве не изменилось
data[1]: 1
address of data: 0022D5A4 - адрес тоже

func1 by value
address of argument: 001CB278 - снова вызываем ту же функцию, адрес аргумента тот же
data[0]: 0 - значения исходного массива
data[1]: 1
data[0]: 500
data[1]: 501

After func1 by value:
data[0]: 0
data[1]: 1
address of data: 0022D5A4
func2 by address
address of argument: 0022D5A4
data[0]: 0
data[1]: 1
data[0]: 600
data[1]: 601
After func2 by address:
data[0]: 600
data[1]: 601
address of data: 0022D5A4
Добавил в просмотре контрольных значений адрес аргумента 001CB278 (и +1 к нему).
В первом вызове функции func1 видно, что значения по начальным адресам изменились.
После выхода из первого вызова, там, по этим адресам (где это ?), значения остались.
В момент второго входа в функцию func1 видно, что значения по указанным адресам сбросились на значения исходного массива. Т.е., я предполагаю, скопировались. Или компилятор может провернуть такое без копирования?
 
Текущее время: 10:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru