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

C для начинающих

Войти
Регистрация
Восстановить пароль
 
Aliaxandr
7 / 7 / 5
Регистрация: 03.07.2015
Сообщений: 219
#1

Адрес указателя и хранение информации в памяти - C (СИ)

26.07.2015, 15:46. Просмотров 317. Ответов 3
Метки нет (Все метки)

Решил поэкспериментировать с указателями. Возник вопрос.
Данная строка кода p = p+1; , как я понимаю, должна "смещать" указатель и он будет указывать в другое место. Теперь значение указателя равняется 0, т.е. он указывает на какую то другую ячейку памяти. Можно ли как-нить узнать адрес куда теперь указывает указатель??? И еще можно ли в Си, какому-либо конкретному адресу присвоить значение? Например есть адрес 0x7fffafaa675c и я хочу чтобы по данному адресу хранилось целочисленное значение 144. Если я не ошибаюсь, то данный адрес является адресом первой ячейки в которую записывается значение и далее заполняются последующее количество ячеек в зависимости от типа переменной (например 4 байта для int)
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
#include<stdio.h>
 
int main(){
 
int a = 0;
int *p;
p = &a;
 
printf("The address of variable a is: %p\n", &a);
printf("The address of pointer is: %p\n", &p);
printf("The value of pointer is: %d\n", *p);
 
*p = *p+1;
 
printf("The address of pointer is: %p\n", &p);
printf("The value of pointer is: %d\n", *p);
 
p = p+1;
 
printf("The address of pointer is: %p\n", &p);
printf("The value of pointer is: %d\n", *p);
 
return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2015, 15:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Адрес указателя и хранение информации в памяти (C (СИ)):

Хранение информации о военнослужащих и работа с ней - C (СИ)
В структуре имеется два поля: фамилия военнослужащего и уникальный код (целое беззнаковое число).Значение битов кода следующее: 0-7 год...

Написать программу, реализующую хранение информации о городах - C (СИ)
Доброго времени суток! Помогите пожалуйста написать программу: Написать программу, реализующую хранение информации в массиве...

Хранение в памяти большого числа - C (СИ)
День добрый. Так сложились обстоятельства, что для выполнения задачи мне надо хранить в памяти 1но большое число, а именно 10 в 30ой...

Написать программу, реализующую хранение информации в массиве структур - C (СИ)
Тема : Подпрограммы. Задание : первый скрин-вариант, второй - что нужно реализовать. помогите пожалуйста, завтра зачет!

Написать программу, реализующую хранение информации о спортивной команде - C (СИ)
помогите пожалуйста написать программу, и разобраться что к чему(((программу, реализующую хранение информации о спортивной команде:...

Хранение размера блока памяти в первой ячейке - C (СИ)
Хотел спросить у опытных людей, не сильно ли будет бомбить у трупрогеров, если сохранять количество ячеек, которое выделил malloc в первой...

3
Даценд
Модератор
Эксперт .NET
3717 / 3590 / 1826
Регистрация: 20.04.2015
Сообщений: 6,557
26.07.2015, 16:02 #2
Цитата Сообщение от Aliaxandr Посмотреть сообщение
Можно ли как-нить узнать адрес куда теперь указывает указатель???
C
1
printf("The address of pointer is: %p\n", p);
0
Aliaxandr
7 / 7 / 5
Регистрация: 03.07.2015
Сообщений: 219
26.07.2015, 20:26  [ТС] #3
Даценд,
C
1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
 
int main(){
 
int a = 0;
int *p;
p = &a;
printf("The address of pointer p is: %d\n", p);
p = p+1;
printf("The address of pointer p is: %d\n", p);
return 0;
}
Тогда в данном случае первая и вторая функции printf должны выводить разный адрес, а они выводят одинаковый.Почему??? И еще вопрос, что изменится, если я в функции printf вместо p напишу &p?
0
Даценд
Модератор
Эксперт .NET
3717 / 3590 / 1826
Регистрация: 20.04.2015
Сообщений: 6,557
26.07.2015, 20:30 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Из-за p = p+1 выводимые адреса будут отличаться на 4 байта.
&p - адрес указателя, p - значение указателя (адрес, на который указывает указатель), *p - значение по адресу, на который указывает указатель.
2
26.07.2015, 20:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2015, 20:30
Привет! Вот еще темы с ответами:

Освобождение памяти после "указателя на указатель" - C (СИ)
Подскажите пожалуйста, как корректно освободить память после вот такого выделения. int i = 0, n =0; const int size = 10; int**mass...

Чтение в памяти указателя на другой адрес - C#
В общем у меня получается считывать только значение в памяти, а вот указатель что-то не выходит. Вот как считываю значение: using...

Адрес объекта, адрес указателя. Где что находится? - C++
#include &lt;iostream&gt; void Foo(int* val) { std::cout &lt;&lt; val &lt;&lt; &quot; &quot; &lt;&lt; *val &lt;&lt; &quot; &quot; &lt;&lt; &amp;val &lt;&lt; '\n'; } void Bar(int* &amp;val) ...

Получить адрес ИЗ указателя на адрес другой программы - Visual Basic
В программе для редактирования RAM памяти процессов (в основном игровых =) ) ArtMoney можно получить из указателя №1 + число №2 на адрес №3...


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

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

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