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

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

Войти
Регистрация
Восстановить пароль
 
 
nullbyte.dev
0 / 0 / 0
Регистрация: 24.07.2011
Сообщений: 14
#1

Адреса и указатели - C++

22.10.2011, 17:19. Просмотров 843. Ответов 15
Метки нет (Все метки)

Приветствую!
Не могу понять, как работать с указателями и адресами для переменных. Если можно, как можно проще объясните, коль не сложно. Книгу читал но сути так и не понял.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2011, 17:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Адреса и указатели (C++):

указатели и адреса. - C++
Пользователь вводит с клавиатуры строку – предложение с пробелами и знаками пунктуации длиной до 100 символов. Вывести на экран адреса...

Адреса и указатели на языке С++ - C++
Pomogite pliz((( #include <iostream.h> typedef int* IntPtrType; int main() { IntPtrType ptr_a,ptr_b; int num_c=4, num_d=7; ...

Указатели и адреса объектов - C++
Вот код: #include <conio.h> #include <iostream.h> void main() { clrscr(); int a,b,*pa=&a,*pb=&b,z=pb-pa; ...

Указатели, адреса и значения - C++
У меня 2 вопроса по поводу указателей. Прошу знатоков С++ помочь разобраться 1. Есть код int a = 5; int b = 4; int *c =...

Строки, указатели и адреса - C++
есть код { char *str="Welcome"; cout<<str<<" "<<(void *)str<<" "<<&str<<endl; for (int i=0;i<8;i++) { cout<<str<<" /...

Указатели, Оператор взятия адреса - C++
Вообщем, ребят, недавно разбирался с указателями в С++ и столкнулся с проблемой понимания следующих вопросов: void Concat(string *str)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Noa
57 / 34 / 4
Регистрация: 08.04.2008
Сообщений: 158
22.10.2011, 17:23 #2
Что конкрктно не понятно?
0
nullbyte.dev
0 / 0 / 0
Регистрация: 24.07.2011
Сообщений: 14
22.10.2011, 17:26  [ТС] #3
Да все. Как использовать, использование & и *. Вообще, с самого начала.
0
Van111
кодер с++
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
22.10.2011, 17:35 #4
int a; а создаётся в стеке
a=5; поместить по этому адресу а 5

int a[10]; создаётся массив а в стеке в виде a[0]-0x0, a[1]-0x4, a[2]-0x8....
а[5]=2; значит в адрес а (0х0 + 5*4 его индекс=0х20) поместить число 2

int *a;
a=5; поместить вместо адреса а (0х0) адрес 0х5

Добавлено через 3 минуты
это тебе надо тока в функциях
void fun(int n)
{
n=23; ошибка так как функция принимает число n допостим 5 а пять не может быть 23
}

void fun(int *n)
{
n=23; всё ок так как в память по адресу n (допустим 0х00230) записали чило 23(но в этом случае функции надо передавать адрес для этого операция & и нужна допустим)
}
int n=3;
fun(n) для второго примера не подходит передача 3
fun(&n)подходит передача 0х23
1
nullbyte.dev
0 / 0 / 0
Регистрация: 24.07.2011
Сообщений: 14
22.10.2011, 17:48  [ТС] #5
Что-то проясняется. Можете прокомментировать, как можно подробнее :
C++
1
2
int MyVar = 7;
int* pMyVar = &MyVar;
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
22.10.2011, 17:52 #6
Цитата Сообщение от Van111 Посмотреть сообщение
void fun(int n)
{
n=23; ошибка так как функция принимает число n допостим 5 а пять не может быть 23
}
какая же это ошибка, локальной переменной присвоили значение 23, все нормально
1
Van111
кодер с++
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
22.10.2011, 17:52 #7
Цитата Сообщение от nullbyte.dev Посмотреть сообщение
int MyVar = 7; int* pMyVar = &MyVar;
да без базара
MyVar это адрес в памяти по которому записано число 7, операции с этой переменной будут проводится над числом если не ставить знаки типа * и ?
*pMyVar это адрес в памяти в котором хранится адрес переменной MyVar
1
nullbyte.dev
0 / 0 / 0
Регистрация: 24.07.2011
Сообщений: 14
22.10.2011, 17:53  [ТС] #8
Цитата Сообщение от Thinker Посмотреть сообщение
какая же это ошибка, локальной переменной присвоили значение 23, все нормально
кстати да, я только что проверил.
0
Van111
кодер с++
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
22.10.2011, 17:54 #9
Цитата Сообщение от Thinker Посмотреть сообщение
какая же это ошибка, локальной переменной присвоили значение 23, все нормально
точно а то я чё то перепутал
0
Thinker
Эксперт C++
4226 / 2200 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
22.10.2011, 17:57 #10
Цитата Сообщение от Van111 Посмотреть сообщение
точно а то я чё то перепутал
Вы наверное хотели сказать, что изменение этой переменной n в данной функции никак не повлияет на переменную, значение которой передавалось из исходной функции
2
Van111
кодер с++
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
22.10.2011, 17:59 #11
nullbyte.dev, если вы в этом хотите совсем суперски разбираться почитайте ассемблер уровнем от новичка до более менее продвинутого прогера (лично я бы знания ассемблера не на какой другой язык не променял) и изучите как на языке ассемблера выглядит с++ операторы.
P.S. поверьте лишним не будет

Добавлено через 27 секунд
Цитата Сообщение от Thinker Посмотреть сообщение
Вы наверное хотели сказать, что изменение этой переменной n в данной функции никак не повлияет на переменную, значение которой передавалось из исходной функции
да точно большое спасибо
1
Noa
57 / 34 / 4
Регистрация: 08.04.2008
Сообщений: 158
22.10.2011, 18:07 #12
nullbyte.dev, я бы вам советовал бы прочитать книгу С. Прата - Язык программирования С++. Лекции и упражнения, издание 5 (в нете ищется на раз-два, если что могу помочь), там очень подробно указатели и ссылки разжеваны.
1
nullbyte.dev
0 / 0 / 0
Регистрация: 24.07.2011
Сообщений: 14
22.10.2011, 18:09  [ТС] #13
Noa, не поверите, именно ее и читаю. Сейчас на странице 111, пошли динамические массивы и я решил все-таки хорошо уяснить для себя указатели и адреса.
0
Noa
57 / 34 / 4
Регистрация: 08.04.2008
Сообщений: 158
22.10.2011, 18:26 #14
А какое у вас издание? Я советую именно 5, ибо там есть дополнительные главы. Тогда я еще не могу понять ваши вопросы, открыл книгу, там перед динамическими массивами очень хорошо описан принцип работы указателей. Вы эти главы точно прочитали?
0
nullbyte.dev
0 / 0 / 0
Регистрация: 24.07.2011
Сообщений: 14
22.10.2011, 18:28  [ТС] #15
Оказалось, у меня 4 издание, пойду скачаю пятое. Читал, видимо невнимательно, перечитаю для закрепления.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2011, 18:28
Привет! Вот еще темы с ответами:

Почему указатели имеют одинаковые адреса - C++
Например, если взять указатели на массивы. **m имеет тот же адрес, что и *m, что и m

[Указатели]Использование операции получения адреса операнда - C++
Здравствуйте! Объясните пожалуйста, почему в пером случае, когда присваиваем указателю p_test адрес переменной test, использование...

Указатели: определить число отрицательных элементов в массиве и вывести их адреса - C++
Привет всем, я хотел бы узнать как решается данная задачка: Написать программу, определяющую число отрицательных элементов в массиве и...

Работа с массивами через указатели, адреса. Функция сортировки выбором любого массива - C++
Надо было написать программу сортировки с использованием функций из учебника. соответственно Compare, Find_minimum_index, Swap и SwapChar....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.10.2011, 18:28
Ответ Создать тему
Опции темы

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