Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2012, 14:05   #1
Morowind
Новичок
Джуниор
 
Регистрация: 05.01.2011
Сообщений: 1
Смущение Указатели СИ.

Я супер-мега ум и торможу очень долгое время с ниженаписанной темой - чем, конечно, очень горжусь Помогите, пжл., разобраться с темой указатели Си

int t; // объявление переменной t
t=*x; // в t находится ЗНАЧЕНИЕ x
*x=*y; // вот этого я не могу понять. Как мне кажется (но может, конечно, неправильно казаться) присвоение указателей работает справо налево) в чем смысл этого выражения понять не могу.
*y=t; // в *y значение t

Скажите, пжл., если я че неправильно написала. И объясните, пжл., где непонятно. P.S извините, если неправильно оформила код (есть же только html php # - си что-то не нашла).

И вот исче:

Рассматриваю пример - указатель и массивы:
int *uk // указатель на целое
uk=&a[0] //указатель на АДРЕС первого элемента массива. Но непонятно почему uk без звездочки?
uk+i // пример опять без звездочки, но по идее должен указывать на i элемент массива
uk+i //написано, что это выражение является адресом a[i] - вот это ваще непонятно
*(uk=1) // это уже совсем непонятно что делается

Если где неправильные комменты дайте знать, пжл. Всем огромное спс за объяснения и удачи
Morowind вне форума Ответить с цитированием
Старый 12.09.2012, 19:20   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Цитата:
t=*x; // в t находится ЗНАЧЕНИЕ x
Абстрактно, в т находится то, что лежит по адресу, записанному в х.

Цитата:
присвоение указателей работает справо налево) в чем смысл этого выражения понять не могу.
В том, что здесь нет присвоения указателей (если конечно не было указателя на указатель). Познакомьтесь с операцией разыменования указателей.

Цитата:
k=&a[0] //указатель на АДРЕС первого элемента массива. Но непонятно почему uk без звездочки?
Познакомьтесь с операцией разыменования указателей. Формально: вы указателю присваиваете указатель.

Цитата:
uk+i // пример опять без звездочки, но по идее должен указывать на i элемент массива
uk+i //написано, что это выражение является адресом a[i] - вот это ваще непонятно
Что вы привезались к звездочке? Когда вы пишите
Код:
int a;
a = ...
вас же не удивляет, что вы инт не пишите опять? Чем же тип инт* провинился?

Почитайте про арифметику указателей. Запись указатель + константа фактически означает адрес (который был в указателе) + константа*размер_типа_на_который_ук азатель и да, он совпадает с a[i].

Цитата:
*(uk=1) // это уже совсем непонятно что делается
Указателю присваивается 1 и разыменовывается.

Последний раз редактировалось p51x; 12.09.2012 в 19:29.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели человек&кошка Помощь студентам 2 15.02.2012 07:26
Указатели vrtp Общие вопросы C/C++ 6 08.11.2011 01:33
Указатели(Си) Bl@st Помощь студентам 6 12.01.2010 21:03
Указатели sid Помощь студентам 2 02.01.2010 23:23
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39