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

С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Где деструкторы? http://www.cyberforum.ru/cpp-beginners/thread608047.html
Ребят сижу разбираю код на С++,не могу понять где диструктор тут.. #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "math.h" #pragma package(smart_init) #pragma resource "*.dfm" //---------------------------------------------------------------------------
C++ Явное преобразование типов class CLSObj { void abc(int d){ ... } ... }; int main() { char *p; CLSObj obj; http://www.cyberforum.ru/cpp-beginners/thread608044.html
как count endl заменить на printf ? C++
Всем добрый вечер , есть одна программа , там встречаются строчки . Собственно вопрос , как будут выглядеть эти строчки с использованием printf . cout << "х" << i << "=" << xn << endl; i++; cout << "x" << i << "=" << xk << endl; i++; }
C++ Не могу разобраться в формуле
Пишу программу про шифр Виженера http://*******/oiwOo . codestr = (str + key) % 26 - набросок формулы для шифрования. str = (codestr - key + 26) % 26 - дешифрование. На данном форуме нашел похожую тему http://www.cyberforum.ru/c-beginners/thread276119.html с такими формулами: codeStr = (str + key - 2*'a') % 26 + 'a'; str = (codeStr - key + 26) % 26 + 'a'; Не могу понять использование -2*'a'...
C++ Неинициализированные переменные http://www.cyberforum.ru/cpp-beginners/thread607990.html
пишет типа не инициализированы d1 и d2,хотя они объявлены#include "iostream" using namespace std; struct Distance { int feet; float inches; }; int main() {
C++ MSVS 2010 Hello world Скачал Vidual Studio 2010 Express, создал проект, скопипастил туда Helloworld. Компиляция завершилась ошибкой. При чем окон с ошибкой я так и не увидел. Неужели в Visual C++ Синтаксис отличный от C++? подробнее

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,136
Записей в блоге: 26
28.06.2012, 02:02     С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки?
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Как я понимаю при вызове функции с эллипсисом аргументы складываются в стек. va_arg "достает" аргументы из стека
Скажем так, что основные пояснения техники передачи параметров делаются на примере intel'овских компиляторов, где идёт передача через стек (видимо), а потому у людей передача параметров однозначно ассоциируется со стеком.

На самом деле на любых более-менее приличных машинах с адэкватным количеством регистров часть параметров передаётся на регистрах. Из понятных соображений скорости. Передавать данные на регистрах быстрее, чем через память. Для большинства функций в реальной жизни параметров немного, а потому статистически значимая часть вызовов будет работать исключительно с передачей параметров на регистрах.

Следствием этого, как правило, является то, что аггрегатные значения передаются по косвенности. Т.е. по языку у тебя передача структуры по значению. Но по программным соглашениям в точке вызова будет сформирована в стеке копия параметра и в функцию передаётся указатель на копию (таким образом за счёт копии, фактический параметр никак нельзя будет внутри вызванной функции испортить).

В "старых" программных соглашениях обычно все структуры передаются по косвенности независимо от размера. Поэтому в случае sparc v8 если передавать структуру с указателем (из нашего примера), то реально в регистре или в памяти будет указатель, но не на строку, а на копию структуры. В "новых" программных соглашениях (abi64 sparc v9, ia-64) обычно сделано более гибко: короткие структуры передаются по значению, а длинные - по косвенности.
 
Текущее время: 04:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru