Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
AnonymC
1175 / 458 / 30
Регистрация: 23.06.2009
Сообщений: 6,355
Завершенные тесты: 1
#1

вопрос про указателей - C++

02.11.2009, 15:32. Просмотров 782. Ответов 13
Метки нет (Все метки)

вот напр эта строка
C++
1
int *m=new int[size];
это как я понял создается указатель?тогда что такое new int?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2009, 15:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос вопрос про указателей (C++):

Вопрос насчет указателей - C++
Объясните мне пожалуйста, что значит подобное объявление: const SimpleCat * const FunctionTwo (const SimpleCat * const TheCat); ...

Ещё раз про использование указателей - C++
Здравствуйте! Проблема многих новичков, не перестроился мог на ссылки и указатели в С++. Много прочитал, просмотрел, чужие примеры...

Вопрос про наследование. - C++
Добрый день всем! Возможно ли создать производный класс в который будут помещены 2 объекта базового класса с возможностью...

Вопрос про ф-ию mul - C++
Расскажите пожалуйста про ф-ию mul, перегружаемую в классе. Что она делает?

Вопрос про char - C++
Пожалуйста обьясните доступным языком в чем разница между объявлениями, и какие когда лучше использовать char a; char *c; char b=new...

Вопрос про конструктор - C++
Обязательно ли делать конструктор по умолчанию для класса, экземпляр которого входит в другой класс? Например так: class Class2 ...

13
stalmir
0 / 0 / 0
Регистрация: 30.10.2009
Сообщений: 1
02.11.2009, 15:38 #2
Сам по себе указатель после опреденеия ни на что не указывает. new int означает что из кучи будет выделена память на которую и будет указывать m.
0
valeriikozlov
Эксперт С++
4681 / 2507 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
02.11.2009, 15:44 #3
new int - (new) оператор,который выделяет динамически память для хранение переменной типа int. В твоем примере написано new int[size] - значит выделяет память не под переменную типа int, а под массив переменных типа int (массив размером size). Этот оператор возвращает адрес выделенной памятия, который присваивается указателю m.
1
AnonymC
1175 / 458 / 30
Регистрация: 23.06.2009
Сообщений: 6,355
Завершенные тесты: 1
02.11.2009, 15:49  [ТС] #4
valeriikozlov,
stalmir, спасибо
0
ISergey
Maniac
Эксперт С++
1407 / 918 / 57
Регистрация: 02.01.2009
Сообщений: 2,734
Записей в блоге: 1
02.11.2009, 15:52 #5
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Этот оператор возвращает адрес выделенной памятия, который присваивается указателю m.
Точнее возвращает адрес первого элемента массива
0
valeriikozlov
Эксперт С++
4681 / 2507 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
02.11.2009, 16:00 #6
Цитата Сообщение от ISergey Посмотреть сообщение
Точнее возвращает адрес первого элемента массива
Согласен. Просто в этом случае адрес выделенной памяти и есть адрес первого элемента массива.
0
AnonymC
1175 / 458 / 30
Регистрация: 23.06.2009
Сообщений: 6,355
Завершенные тесты: 1
02.11.2009, 20:01  [ТС] #7
Цитата Сообщение от ISergey Посмотреть сообщение
Точнее возвращает адрес первого элемента массива
почему именно первого??я что не тяну до программера....
0
valeriikozlov
Эксперт С++
4681 / 2507 / 322
Регистрация: 18.08.2009
Сообщений: 4,550
02.11.2009, 20:46 #8
любая выделенная память имеет свое начало и свой конец. адрес начала выделенной памяти совпадает с адресом первого элемента массива (т.к. все элементы идут по порядку)
PS: пытаюсь доступно объяснить
0
audiophile
9 / 9 / 0
Регистрация: 01.11.2009
Сообщений: 67
02.11.2009, 20:51 #9
Цитата Сообщение от МедведЪ Посмотреть сообщение
почему именно первого??я что не тяну до программера....
Первого, т.е. нулевого, если вы вдруг подумали, что он ведет на mas[1]. Нет, он ведет на mas[0], где хранится первый элемент массива.
0
AnonymC
1175 / 458 / 30
Регистрация: 23.06.2009
Сообщений: 6,355
Завершенные тесты: 1
02.11.2009, 21:29  [ТС] #10
Цитата Сообщение от audiophile Посмотреть сообщение
Первого, т.е. нулевого, если вы вдруг подумали, что он ведет на mas[1]. Нет, он ведет на mas[0], где хранится первый элемент массива.
ааа ок ок врубил ахахспасибо бльшое,а еще вопрос,а почему не а последнего а на первого?Оо...просто интересно
0
Gravity
569 / 563 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
02.11.2009, 21:33 #11
Цитата Сообщение от МедведЪ Посмотреть сообщение
а почему не а последнего а на первого?Оо...просто интересно
Наверно мало смысла в таком выделении памяти. Ты просил 512 байт, а тебе дали указатель на конец этого участка памяти, ну и при попытке туда что-то записать рискуешь вылететь за пределы допустимого адресного пространства.
0
AnonymC
1175 / 458 / 30
Регистрация: 23.06.2009
Сообщений: 6,355
Завершенные тесты: 1
02.11.2009, 21:59  [ТС] #12
Цитата Сообщение от Gravity Посмотреть сообщение
Наверно мало смысла в таком выделении памяти. Ты просил 512 байт, а тебе дали указатель на конец этого участка памяти, ну и при попытке туда что-то записать рискуешь вылететь за пределы допустимого адресного пространства.
глупые у меня вопросы
0
ISergey
03.11.2009, 01:29
  #13

Не по теме:

Цитата Сообщение от МедведЪ Посмотреть сообщение
глупые у меня вопросы
Есть немного..

1
blackswan
13 / 13 / 0
Регистрация: 08.07.2009
Сообщений: 61
03.11.2009, 18:58 #14
Цитата Сообщение от МедведЪ Посмотреть сообщение
ааа ок ок врубил ахахспасибо бльшое,а еще вопрос,а почему не а последнего а на первого?Оо...просто интересно
если уж совсем вдаваться в подробности, то машина не знает, что такое первый(нулевой) и последний элемент в памяти. Физически выделенная последовательность может быть представлена как угодно, всё зависит от архитектуры конкретного ЭВМ, бывает, что память читается слева направо, бывает, что справа налево. Есть правило старшинства байтов, битов (или других элементов). В одних машинах (или системах) big-endian,в других little-endian порядок. http://ru.wikipedia.org/wiki/%D0%9F%...82%D0%BE%D0%B2 . Обычно это не имеет значения, однако при совместной работе нужно это учитывать, а также помнить, что это имеет значение, если производить манипуляции с типами данных более 1 байта.
Так что правильнее говорить "начало" последовательности.

Цитата Сообщение от Gravity Посмотреть сообщение
Наверно мало смысла в таком выделении памяти. Ты просил 512 байт, а тебе дали указатель на конец этого участка памяти
ну есть один случай... так присваивается стек.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2009, 18:58
Привет! Вот еще темы с ответами:

Вопрос про палиндромы - C++
Такая вот задачка по програмированию С++: Ввести рядок символов и составить масив слов-палиндромов (читаются одинаково с права на лево и...

Вопрос про указатели - C++
#include <iostream.h> int main() { int x; int *Pointer; pointer = &x; cout << pointer; cout << *ponter; return 0; ...

Вопрос про конструктор - C++
цитата исходного кода из книги: class stock{ ... public: stock(); //Типа объявление конструктора по умолчанию чтоли... ...

Вопрос про указатели - C++
char *a = "s"; 1. Выделяется место в памяти 2. В это место записывается s 3. Указателю a приваивают адрес памяти где храниться s ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru