Heim > Artikel > Backend-Entwicklung > Was unerfahrene Programmierer über den Unterschied zwischen C-Sprache und C++ wissen sollten
Die C-Sprache, die unerfahrene Programmierer kennen sollten Der Unterschied zwischen C++ und C++
Wenn Sie zum ersten Mal Programmieren lernen, denken viele Leute, dass C-Sprache und C++ dasselbe sind? Heute werde ich die Unterschiede zwischen C-Sprache und C++ im Detail vorstellen.
1. Schlüsselwörter
Blaue Markierungen sind C-Sprachschlüsselwörter. Die folgenden roten Markierungen sind C++-Schlüsselwörter, die die Sprache enthält nicht vorhanden (gemäß C++98 enthält C++ 63 Schlüsselwörter)
2. Unterschiede in der Quelldatei
C-Sprachdateisuffix Das ursprüngliche Dateinamensuffix für .c und c++ ist .cpp
Wenn beim Erstellen der Quelldatei nichts angegeben wird, ist der Standardwert .cpp
3 Der Rückgabewert ist anders
In der C-Sprache, wenn eine Funktion kein a angibt Rückgabewerttyp, der Standardwert ist der Typ int und gibt eine Zufallszahl zurück, normalerweise 0XCCCCCCCC
Wenn die Funktion in C++ keinen Wert zurückgibt, muss sie als void-Typ angegeben werden, andernfalls wird die Kompilierung nicht bestanden
4. Parameterliste
Wenn eine Funktion in der C-Sprache keine angegebene Parameterliste hat, kann sie standardmäßig eine beliebige Anzahl von Parametern akzeptieren.
In C++ gibt es eine strikte Parametertyperkennung. Eine Funktion ohne Parameter Die Liste ist standardmäßig void und erhält keine Parameter.
Standardparameter
Standardparameter sind Funktionsparameter, die bei der Deklaration und Definition einen Standardwert angeben. Wenn beim Aufruf dieser Funktion keine tatsächlichen Parameter angegeben werden, werden die Standardwerte verwendet, andernfalls werden die angegebenen tatsächlichen Parameter verwendet.
Der folgende Code:
#include<iostream>using namespace std;void test(int a = 1) { cout << a << endl; }int main() { test(); test(10);//输出的结果是1 return 0;//函数输出结果是10}
Die Standardparameter sind in zwei Kategorien unterteilt, eine ist die vollständige Standardeinstellung und die andere ist die Halbstandardeinstellung.
Der erste ist der vollständige Standard. Alle Parameter der vollständigen Standardparameter haben Standardwerte. Wenn keine Parameter manuell übergeben werden, verwendet der Compiler die Parameter in der Standardparameterliste. Hier ist jedoch zu beachten, dass der Wert von links nach rechts abgeglichen wird, wenn beim Übergeben von Parametern nur einige Parameter übergeben werden.
Codebeispiel:
#include<iostream>using namespace std;void test(int a = 1,int b = 2, int c = 3) { cout << a << " " << b << " " << c << endl; }int main() { test();//1 2 3 test(10);//10 2 3 test(10, 20);//10 20 3 test(10, 20, 30);//10 20 30 return 0; }
Demonstration des Semi-Standard-Parametercodes:
void test(int a ,int b = 2, int c = 3) { cout << a << " " << b << " " << c << endl; }void test1(int a, int b, int c = 3) { cout << a << " " << b << " " << c << endl; }
Die Testfunktion übergibt mindestens einen Parameter und die test1 Funktion mindestens Nur durch Übergabe von zwei Parametern kann die Funktion normal ausgeführt werden.
Hinweis:
Parameter mit Standardwerten müssen am Ende der Parameterliste platziert werden. Weil Parameter von rechts nach links übergeben werden.
Standardparameter können nicht sowohl in der Funktionsdeklaration als auch in der Definition vorkommen, es kann nur einer davon übrig bleiben.
Der Standardwert muss eine Konstante oder eine globale
Variable sein.
C-Sprache unterstützt keine Standardeinstellung.
5. C++ unterstützt Funktionsüberladung, die C-Sprache jedoch nicht.
In der tatsächlichen Entwicklung müssen wir manchmal mehrere Funktionen mit ähnlichen Funktionen implementieren, aber einige Details sind unterschiedlich. Wenn wir beispielsweise die Werte zweier Variablen mit mehreren Typen wie int, float, char, bool usw. austauschen möchten, müssen wir die Adresse der Variablen über Parameter an die Funktion übergeben. In der C-Sprache müssen Programmierer häufig drei Funktionen mit unterschiedlichen Namen entwerfen, und ihre Funktionsprototypen ähneln den folgenden:
void swap1(int *a, int *b); //交换 int 变量的值 void swap2(float *a, float *b); //交换 float 变量的值 void swap3(char *a, char *b); //交换 char 变量的值 void swap4(bool *a, bool *b); //交换 bool 变量的值
In C++ ist dies jedoch völlig unnötig. C++ erlaubt, dass mehrere Funktionen denselben Namen haben, solange ihre Parameterlisten unterschiedlich sind. Dies ist eine Funktionsüberladung (Funktionsüberladung). Beim Überladen kann ein Funktionsname für mehrere Zwecke verwendet werden.
Die Parameterliste wird auch Parametersignatur genannt, einschließlich der Art des Parameters, der Anzahl der Parameter und der Reihenfolge der Parameter. Solange es einen Unterschied gibt, wird sie als andere Parameterliste bezeichnet.
#include <iostream>using namespace std;//交换 int 变量的值void Swap(int *a, int *b){int temp = *a; *a = *b; *b = temp; }//交换 float 变量的值void Swap(float *a, float *b){float temp = *a; *a = *b; *b = temp; }//交换 char 变量的值void Swap(char *a, char *b){char temp = *a; *a = *b; *b = temp; }//交换 bool 变量的值void Swap(bool *a, bool *b){char temp = *a; *a = *b; *b = temp; }int main(){//交换 int 变量的值int n1 = 100, n2 = 200; Swap(&n1, &n2);cout<<n1<<", "<<n2<<endl;//交换 float 变量的值float f1 = 12.5, f2 = 56.93; Swap(&f1, &f2);cout<<f1<<", "<<f2<<endl;//交换 char 变量的值char c1 = 'A', c2 = 'B'; Swap(&c1, &c2);cout<<c1<<", "<<c2<<endl;//交换 bool 变量的值bool b1 = false, b2 = true; Swap(&b1, &b2);cout<<b1<<", "<<b2<<endl;return 0; }
Laufergebnis:
200, 100 56.93, 12.5 B, A 1, 0
Überladung liegt innerhalb desselben Bereichs (gleiche Klasse, gleicher Namespace usw.) und hat mehrere Funktionen mit demselben Namen, aber unterschiedlichen Parametern. Das Ergebnis einer Überladung ist, dass ein Funktionsname mehrfach verwendet werden kann, was die Benennung komfortabler macht (in mittleren und großen Projekten ist die Benennung von Variablen, Funktionen und Klassen ein lästiges Problem) und den Aufruf flexibler macht.
Bei Verwendung überladener Funktionen sollten die Funktionen der Funktionen mit demselben Namen gleich oder ähnlich sein. Verwenden Sie nicht denselben Funktionsnamen, um völlig unabhängige Funktionen zu implementieren, die Lesbarkeit ist jedoch nicht gegeben gut und verwirrt die Leute.
Beachten Sie, dass unterschiedliche Parameterlisten unterschiedliche Anzahlen, Typen oder Reihenfolgen von Parametern enthalten. Es ist nicht akzeptabel, nur unterschiedliche Parameternamen zu haben. Funktionsrückgabewerte können nicht als Grundlage für eine Überladung verwendet werden.
Regeln für das Überladen von Funktionen:
(1) Die Funktionsnamen müssen gleich sein.
(2) Die Rückgabetypen von Funktionen können gleich oder unterschiedlich sein.
(3)仅仅返回类型不同不足以成为函数的重载。
6、指针和引用
C语言中函数传参方式有两种:传值和传址
以传值方式,在函数调用过程中会生成一份临时变量用形参代替,最终把实参的值传递给新分配的临时形参。它的优点是避免了函数调用的副作用,却无法改变形参的值。如果要改变实参的值,只能通过指针传递。
指针可以解决问题,但是不安全,因此在C++中引入了引用。
引用:引用不是新定义的一个变量,他是原变量的一个别名,编译器不会为引用变量开辟空间,它和他引用的变量共用同一块内存空间。
类型& 变量(对象名)=引用变量
int &num1=num0;
引用特性;:
(1)引用定义时必须初始化
(2)一个变量可以有多个引用
(3)引用一旦绑定一个实体就不能改变为其他变量的引用
//指针和引用的区别
引用不可以为空,但指针可以为空
引用不可以改变指向,对一个对象”至死不渝”;但是指针可以改变指向,而指向其它对象
引用的大小是所指向的变量的大小,因为引用只是一个别名而已;指针是指针本身的大小,4个字节。
7、命名空间
在C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局命名空间中,会导致很多冲突,使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或者名字污染,namespace关键字的出现就是解决这种问题。而C语言中没有。
8、输入与输出
cout代表c++的输出流
cin代表c++的输入流
它们都是在头文件“iostream”中定义。
“cout”必须与”在一条语句中可以多次使用“如:cout
#include <iostream>using namespace std;int main() {int a,b;cout<<"请输入a,b的值"<<endl;cin>>a>>b;cout<<"输出a的值"<<a<<"输出b的值"<<b<<endl;return 0; }
感谢大家的阅读,大家现在知道C语言和C++的区别了吗?
本文转自:https://blog.csdn.net/qq_39539470/article/details/81268916
推荐教程:《C语言》
Das obige ist der detaillierte Inhalt vonWas unerfahrene Programmierer über den Unterschied zwischen C-Sprache und C++ wissen sollten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!