![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
sorokin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 20.6.2006 Репутация: нет Всего: нет |
Начал вот почитывать книжку по Си на ночь. Жуть. Не врубаюсь.
Вопрос первый: int *px; printf ("%x ", px); printf ("%x ", &px); printf ("%x ", &px[0]); Выводит что-то следующее: bffe24dc bffe2424 bffe24dc Что мне вывела строка: "printf ("%x ", &px);"? Вопрос второй: Что значит "static variable *ph"? Как это понимать на деле? |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
Адрес локальной переменной px типа указатель на int. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
зависит от контекста |
|||
|
||||
bsa |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Это статичный указатель на переменную типа variable. Все статичные переменные существуют в единственном экземпляре в программе/функции/классе и инициализируются только при запуске программы. Короче пример:
|
||||||
|
|||||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
не совсем так |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Если не так, то как?
Возможно, глобальная статичная переменная не доступна из другого модуля, нежели в котором она определена. Но я не уверен. |
|||
|
||||
Daevaorn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Локальные переменные со статическим storage duration инициализируются, когда программа впервые входит в блок, где они определены. Глобальные статические переменные и статические члены класса, да, инициализируются при старте программы.
В С++ нет понятия "модуль". Есть только похожее - единица трансляции. Так вот, ты прав, глобальная статическая переменная имеет internal linkage. Но статические data member'ы имеют external linkage. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |