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

Поясните, пожалуйста, несколько моментов про выделение памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не заполнет поле в структуре http://www.cyberforum.ru/cpp-beginners/thread732602.html
Описал структуру, но она некорректно заполняется. А именно, пропускается поле при втором и последующим прохождении.Помогите, пожалуйста. Что не так? #include "stdafx.h" #include <conio.h> #include <stdio.h> #include <locale.h> #include <stdlib.h> #define N 3 void init_list(void);
C++ Нужен блокнот - я новичок Помогите пожалуйста! Мне срочно нужна самая простая программа на C++ где есть только поле для ввода текста! Стиль текста должен быть не объёмным, фиксированным окном инструментов, название в заголовке: Coder - исходный файл и готовый Coder.exe файл. Спасибо, я новичок просто, очень надо до завтра!!! У меня на компьютере просто не устанавливается C++. Спасибо! http://www.cyberforum.ru/cpp-beginners/thread732595.html
Массивы, функции C++
Ребят, помогите прогу написать по заданию, пожалуйста.
C++ Генерация всех максимальных независимых множеств графа
Здравствуйте,обращаюсь к вам по поводу программы на языке С++(независимые множества в графе)Написал отдельные функции для программы,по примеру языка Делфи, однако не все работает,посмотрите пожалуйста в каких функциях я допустил ошибки?Код программы: #include<iostream> using namespace std; #include<conio.h> #include<math.h> #include<locale> #include<set> const int N=10; set <int > A;
C++ Засечь время сортировки разных типов данных http://www.cyberforum.ru/cpp-beginners/thread732573.html
Всем доброго времени суток, нужно в программе засечь время выполнения сортировки разными способами, в моём случае это выборки и обмен,и для 3 типов данных с float char int, то есть в итоге будет 6 выводов времени. Мне не совсем понятно как с помощью перегрузки функции можно передавать в одну и туже функцию массивы разных типов данных, помогите пожалуйста,исходный код(не копилил не разу, пока нет...
C++ Найти произведение для элементов второй строки по формуле P=(1+cos(1-(1/(A[1][j])))) Дана матрица А(4,3). 1) Найти произведение для элементов второй строки по формуле P=(1+cos(1-(1/(A)))); 2) Создать новый одномерный массив из минимальных элементов каждой строки данной матрицы; 3) Поменять местами значение произведения и элемент а . Программа правильная? #include "stdafx.h" #include <iostream> #include <stdlib.h> #include <math.h> подробнее

Показать сообщение отдельно
fit
14 / 14 / 0
Регистрация: 20.04.2010
Сообщений: 102
15.12.2012, 18:43     Поясните, пожалуйста, несколько моментов про выделение памяти
Цитата Сообщение от vdvoid
в первой строке указатель ссылается на какуюто память, те она уже выделена и занять ее ни кто не может?
это просто объявление переменной типа int* - "указатель на int".
указатель - переменная, хранящая адрес некоторого объекта в динамически распределяемой памяти (heap). объявление переменной подразумевает выделение под нее памяти в программном стеке.
но объявление переменной не означает ее инициализацию (определение). то есть, на данном этапе указатель создан, но не инициализирован адресом. он никуда не ссылается ( у него нет референта )
конечно стек грязный, и физически в а на момент создания будет какое-то число, но оно не имеет смысла. это не адрес, а хаотичный набор бит.
поэтому, например, компилятор Visual Studio выдаст вам ошибку "используется не инициализированная переменная", если вы попробуете использовать такой указатель.
Цитата Сообщение от vdvoid
a = new a(1);
это бред. в операторе new указывается тип создаваемого объекта. должно быть так:
C++
1
a = new int(1)
в этом случае new создаст в heap переменную типа int со значением 1 и возвратит ее адрес. возвращенный адрес помещается в переменную-указатель а. теперь указатель а имеет референт - переменную со значением 1.
если напишите
C++
1
cout<<a;
увидите на экране возвращенный new адрес.
а используя оператор разыменования указателя (*), можно обратиться к самой переменной, адрес которой содержится в а.
например
C++
1
cout<<*a;
выведет вам 1
 
Текущее время: 08:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru