Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Для начинающих, кто занимаеться по -Е.Л. Шиманович С/С++ 
:(
    Опции темы
JackYF
Дата 16.11.2006, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



smilesmilesmile
Нафиг тебе адрес переменной??? )
Ну выдает она адрес первого элемента smile Потому что не выделяется в стеке. Что же ей еще выводить? Это все заморочки компилятора.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 16.11.2006, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Dov
Fazil6
JackYF,
Цитата(std-2003)
4.2 Array-to-pointer conversion
1 An lvalue or rvalue of type “array of N T” or “array of unknown bound of T” can be converted to an rvalue of type “pointer to T”. The result is a pointer to the first element of the array.



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 16.11.2006, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



archimed7592, гениально!
Но я в принципе это же и сказал.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Fazil6
Дата 16.11.2006, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



вы мне говорите, что имя массива интов это переменная указатель на инт. Я вам говорю, что массив - это массив, а указатель - это указатель, что это не одно и тоже, хотя и тесно связано.
подсунь компиллятору вот такой коди он тебе покажет какой тип у nn 
Код

int nn[] = {0,0,4,4,4};
int **cn   = &nn;


Добавлено @ 22:21 
Цитата

Но я в принципе это же и сказал

прочитай внимательно
Цитата

can be converted

т.е. он не является an rvalue of type “pointer to T” он может конвертироваться в него
PM MAIL   Вверх
archimed7592
Дата 16.11.2006, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Fazil6, такой код не должен компилиться...&nn - это нечто непонятное...не все, что прогатывает компилятор есть правильно...хотя такое вообще не проглотит
зы. почитайте, ребят...смеху ради smile 



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Fazil6
Дата 16.11.2006, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

Fazil6, такой код не должен компилиться...&nn - это нечто непонятное...не все, что прогатывает компилятор есть правильно...хотя такое вообще не проглотит
я и не говорил, что это будет компиллиться. я к тому, что почитайте сообщение об ошибке, которое выдаст компиллятор.
кстати ничего непонятного в &nn нет - это компиллятором должно интерпретироваться как указатель на массив.
PM MAIL   Вверх
archimed7592
Дата 16.11.2006, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Fazil6 @  17.11.2006,  00:14 Найти цитируемый пост)
должно интерпретироваться как указатель на массив
с каких пор должно? можно цитатку из стандарта?


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Fazil6
Дата 16.11.2006, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



стандарта у меня нет. Инфа из ссылки, которую я уже здесь давал пару страниц назад
http://faqs.org.ru/progr/c_cpp/cfaqrus.htm
п 2.13
PM MAIL   Вверх
JackYF
Дата 17.11.2006, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Fazil6 @  16.11.2006,  22:13 Найти цитируемый пост)
т.е. он не является an rvalue of type “pointer to T” он может конвертироваться в него 


А я и сказал, что при использовании... - то есть конвертируется при надобности smile
А вообще уже вроде бы все более-менее ясно стало.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Metixa
Дата 18.11.2006, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



Цитата(archimed7592 @ 16.11.2006,  23:03)
Fazil6, такой код не должен компилиться...&nn - это нечто непонятное...не все, что прогатывает компилятор есть правильно...хотя такое вообще не проглотит
зы. почитайте, ребят...смеху ради smile


все было прикрасно и полезно и .и.и но из за моей неопытности все еще не поиму:

int nameofmas[] = {1,2,3,4};
вот пока этот массив отправят в функцию как аргумент, г д е зафиксировался сама фраза nameofmas, он не записан на адрес первого элемента массива, потоиу что по тому адресу (4 баит) записан "1", он (nameofmas) пока не указатель что ему было выделено другои адрес, тогда обьясните мне где помнит комп. что после буквы "n" следует "a", потом "m", далше идет "e" и т.д. (nameofmas) smile 

PM MAIL   Вверх
archimed7592
Дата 18.11.2006, 03:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Metixa, советую перечитать свой пост и постараться самому понять что ты там написал...
к слову, имена переменных нигде никто не помнит...после компиляции эти имена не сохраняются...


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Metixa
Дата 18.11.2006, 04:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет




 если я не ошибаюсь после компиляции  память которым ползовались лок. переменные освобождается, но перед освобождением они сушествуют не так?

Код

void main() {
int a[] = {1,2,3,4};
int b[] = {5,6,7,8};
cout<<a[2]<<" "<<b[3]<<endl;
}


где то, хоть "максимально временно" имена "a" и "b" же записывается, иначе как комп. выдаст 3 и 8????

Это сообщение отредактировал(а) Metixa - 18.11.2006, 04:13
PM MAIL   Вверх
archimed7592
  Дата 18.11.2006, 04:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



    значит так...твой исходник проходит следующие стадии:
  • препроцессинг
    работает препроцессор - заменяет все #include на содержимое соответствующих файлов, заменяет идентификаторы, определённые #define на соответствующее содержимое, убирает некоторые куски кода и т. д. результатом этого этапа есть "такой же" исходник на C++
  • компиляция
    происходит анализ текста твоей программы, все строки кода заменяются на соответствующие мнемоники инструкций процессора...в этот момент все имена (будь то переменные или ф-ции или что-либо ещё) стоновятся обыкновенными метками (label) исходника на языке ассемблера - результата.
  • ассемблирование или трансляция
    на этом этапе происходит прямая трансляция мнемоник инструкций процессора в их бинарное представление. т. е. из инструкции mov ax, bx мы получаем несколько байт непонятных нам, но понятных процессору. именно эти инструкции умеет выполнять процессор. результатом является объектный файл - код, понятный процессору + немного информации об именах и их адресах.
  • сборка или линковка
    происходит собирание нескольких объектных файлов (каждый cpp файл на выходе дает ровно один объектный файл). сборка происходит таким образом: берется и составляется общая для всех объектных файлов таблица соответствий имен и их адресов. потом проходятся по каждому объектному файлу и для всех имен (ф-ций, переменных и т. п.) производится подстановка конкретного адреса. на этом этапе все имена теряют свой смысл. результатом является исполняемый файл (.exe в windows), в котором никаких a, b, nameofmass и т. п. просто напросто нету.
таким образом, когда ты пишешь
Код
int arr [5] = {/* ... */};
int *parr = arr;
то на этапе компиляции получаешь что-то вроде mov [ebp-8], 0x400124 т. е. адрес arr - он нигде не хранится...он "прошит" в инструкции. т. е. сразу "взять и положить адрес", а не "взять адрес от туда и положить туда".

зы. вообще говоря в реальности такие массивы хранятся локально т. е. на стеке...т. о. получаешь что-то вроде mov [ebp-32], ebp-8, где ebp-8 - адрес массива, т. е. адрес относительно верхушки стека, а не какой-то четкий адрес.

Это сообщение отредактировал(а) archimed7592 - 18.11.2006, 04:38


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Mixeer
Дата 19.11.2006, 04:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 19.11.2006

Репутация: нет
Всего: нет



люди помогите!
Тока начал учить с и срочно надо написать такую программу:

Тема «Шифрование двоичных данных. Дешифрование двоичных данных»

Метод шифрования основан на замене исходной последовательности битов a 
последовательностью b   в которой a1=b1 ,bi=1  , если a=a(i-1) , и 0 в противном случае (i=1,2,3…n). 
входные и выходные данные - двоичные файлы
ддлложности возникают с операциями с битами!

Это сообщение отредактировал(а) Mixeer - 19.11.2006, 04:06
PM MAIL   Вверх
JackYF
Дата 20.11.2006, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Mixeer, твои дествия должны быть следующими...

1) Пойти в Центр Помощи!
2) Создать новую тему!


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1273 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.