Язык программирования С++ произошёл от Си.
Поддерживает разные парадигмы программирования, но, в сравнении с его предшественником — языком Си, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Однако в дальнейшем Си и C++ развивались независимо, что привело к росту несовместимостей между ними. При создании C++ стремились сохранить совместимость с языком Си. Большинство программ на Си будут исправно работать и с компилятором C++. C++ имеет синтаксис, основанный на синтаксисе Си. Последняя редакция Си, С99, добавила в язык несколько конфликтующих с С++ особенностей. Эти различия затрудняют написание программ и библиотек, которые могли бы нормально компилироваться и работать одинаково в компиляторах Си и C++, что, конечно, запутывает тех, кто программирует на обоих языках.
Язык С и его производные один из самых востребованных и высокооплачиваемых языков программирования.
C++ Developer. Professional Разработчик С++ (Углубленный уровень) Пройти тестирование на знание языка С++.
Бьёрн Строуструп, придумавший C++, неоднократно выступал за максимальное сокращение различий между Си и C++ для создания максимальной совместимости между этими языками. Противники же такой точки зрения считают, что так как Си и C++ являются двумя различными языками, то и совместимость между ними не так важна, хоть и полезна. Согласно этому лагерю, усилия по уменьшению несовместимости между ними не должны препятствовать попыткам улучшения каждого языка в отдельности. Бьёрн Страуструп, Бьярне Строуструп (дат. Bjarne Stroustrup произношение род. 11 июня 1950 (по другим сведениям, 30 декабря), Орхус, Дания) - автор языка программирования C++.
Передать аргументы функции в С++ можно тремя сопособами: передача по значению, передача по ссылке(Ссылка) и передача по указателю(Указатели в C++).
Передача по значению | Передача по ссылке(Ссылка) | Передача по указателю(Указатели в C++) в случае динамического массива | |
Переменная | #include <iostream> /* * передача по значению */ using namespace std; int ByValue( int ); //прототип (передача по значению) int main() { int x=2; cout<<"x = "<<ByValue(x)<<endl; return 0; } int ByValue (int number) { return number*=number;// аргумент вызывающего не изменяется } | #include <iostream> /* * передача по ссылке */ using namespace std; void ByReference( int & ); //прототип (передача по ссылке) int main() { int x=4; cout<<"x = "<<x<<endl; ByReference(x); cout<<"x = "<<x<<endl; return 0; } void ByReference (int &numberRef) { numberRef*=numberRef;// аргумент вызывающего модицируется } | |
Одномерный Массив | В С++ массивы автоматически передаются по ссылке, а не по значению. Но для отдельных элементов массива нужно явным образом применять & иначе будет передаваться по значению, а не по ссылке. То есть нужно различать способ передачи массива целиком и его элементов. | #include <iostream> /* * передача по ссылке */ using namespace std; void modifyArray( int [], int ); //прототип передачи по ссылке void modifyElement( int ); //прототип передачи по значению элемента массива void modifyElementRef( int &); //прототип передачи по ссылке элемента массива int main() { const int arraySize = 5; int arr[arraySize] = {0,1,2,3,4}; //инициализация массива //передать массив arr в modifyArray по ссылке. передать размер массива. modifyArray( arr, arraySize); for (int j=0;j < arraySize;j++) cout<<arr[j]; cout<<"\n"; modifyElement( arr[3]); modifyElementRef( arr[3]); for (int j=0;j < arraySize;j++) cout<<arr[j]; cout<<"\n"; return 0; } //b указывает в памяти на исходный массив arr void modifyArray (int b[], int sizeOfArray) { //умножить каждый эелемент массива на 2 for (int k=0;k < sizeOfArray;k++) b[k]*=2; } void modifyElement( int e) {//e является локльной копией элемента массива arr[3] //умножить параметр на 2 cout<<(e*=2)<<endl; } void modifyElementRef( int &eRef) {//eRef является ссылкой на элемент массива arr[3] //умножить параметр на 2 eRef*=2; } | |
Двумерный Массив (матрица) | #include <iostream> /* * передача по ссылке двумерного массива */ using namespace std; const int row = 2, col =3;//описание размерности массива void printArray( int [][col]); //прототип передачи по ссылке для двумерного массива int main() { int arr1[2][3] = {0,1,2,3,4}; //инициализация массива //передать массив arr1 в printArray по ссылке printArray( arr1); return 0; } void printArray (int a[][col]) { //вывести элементы массива for (int r=0;r < 2;r++){ for (int c=0;c < col;c++) cout<<a[r][c]; } } |
Листинг на языке C++
//Код C++ for (int i=0;i<argc;i++, *argv++){ cout<<*argv<<"\n"; }; //OR for (int i=0;i<argc;i++){ cout<<argv[i]<<'\n'; if(strcmp(argv[i],"-kk")==0) cout<<"-kk key ";//обработка ключа };
Листинг на языке C
//Код C #include <stdio.h> int main( int argc, char ** argv ){ while ( argc-- ) printf("%s\n", *argv++); return 0; }
#include <stdio.h> int main(int argc, char *argv[]){ int i=0; for (i=0;i<argc;i++){ printf("Argument %d: %s\n",i,argv[i]); }; };