Zeichen-Array – Array-Name

Vorwort: Dieser Artikel wurde geschrieben, um jedem ein wirkliches Verständnis von Zeichenfeldern zu vermitteln. Jeder weiß, dass der Array-Name eines Arrays die erste Adresse des Speicherplatzes des Arrays ist. Warum gibt die erste von anderen Arrays gedruckte Adresse tatsächlich die Adresse aus, während die Zeichendaten den Inhalt des gesamten Zeichenarrays ausgeben?

1. Zeichenarrays wirklich verstehen

Lassen Sie es uns anhand dieses Codes erklären:

    char a[11] = "0123456789";    // 定义字符数组
	char *ptr = a;
	cout << (void *)a << endl;    // 打印首地址
	cout << a << endl;            // 打印字符数组内容
	cout << ptr << endl;          // 打印字符数组内容
	cout << (void*)ptr << endl;   // 打印字符数组首地址
	cout << *ptr << endl;         // 通过指针访问字符数组元素

Erstens ist a der Array-Name eines Zeichenarrays mit einer Länge von 20, also die erste Adresse des Zeichenarrays. Welcher Typ ist also a? Meiner Meinung nach kann a als Zeigervariable mit Datentyp char * verstanden werden. Diese Variable speichert die erste Adresse des Systems des dem Zeichenarray zugewiesenen Speicherplatzesdies ist sehr kritisch. Gleichzeitig können wir tatsächlich eine char * Zeigervariable ptr verwenden, um a. zu erhalten

Wenn dann der Array-Name des Zeichen-Arrays gedruckt wird, wird der Inhalt des Zeichen-Arrays gedruckt, nicht die erste Adresse des Speicherbereichs, der dem Zeichen-Array entspricht. Warum? .

Weil die Zeichenarrays alle mit „\0“ enden, sodass das Programm bei der Ausgabe weiß, wann es enden muss, also die unterste Ebene von c++ wird die Ausgabe des Zeichenarrayscout überlastet und der Inhalt des Zeichenarrays wird ausgegeben, nicht die Adresse.

kann in andere Zeigertypen umgewandelt werden, wenn Sie die Adressausgabe erhalten möchten. In C++ kann void jede Art von Zeigervariable darstellen. *

Fettdruck
Ergebnis:
Fügen Sie hier eine Bildbeschreibung ein

2. Nicht-Zeichen-Array

   当数组为非字符数组时,打印数组名,就是地址。注意与字符数组区分,搞懂原理即可。

Guess you like

Origin blog.csdn.net/qq_44859843/article/details/127640656