Heim Backend-Entwicklung C#.Net-Tutorial So initialisieren Sie ein C++-Array

So initialisieren Sie ein C++-Array

Oct 15, 2021 pm 02:09 PM
数组 c++

So initialisieren Sie ein Array in C++: 1. Definieren Sie zuerst das Array und weisen Sie dem Array dann einen Wert zu. Die Syntax lautet „Datentyp Array-Name [Länge]; Array-Name [Index] = Wert;“; das Array beim Definieren des Arrays. Die Syntax lautet „Datentyp-Array-Name [Länge]=[Werteliste]“.

So initialisieren Sie ein C++-Array

Die Betriebsumgebung dieses Tutorials: Windows 7-System, C++17-Version, Dell G3-Computer.

Manchmal ist es sinnvoller, den Variablenwert im Programm festzulegen, als den Variablenwert einzugeben. Das Schreiben separater Zuweisungsanweisungen für jedes Element des Arrays kann jedoch einen hohen Tippaufwand bedeuten, insbesondere bei großen Arrays.

Schauen Sie sich zum Beispiel ein Programm an:

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    const int NUM_MONTHS = 12;
    int days[NUM_MONTHS];
    days[0] = 31; // January
    days[1] = 28; // February
    days[2] = 31; // March
    days[3] = 30; // April
    days[4] = 31; // May
    days[5] = 30; // June
    days[6] = 31; // July
    days[7] = 31; // August
    days[8] = 30; // September
    days[9] = 31; // October
    days[10] = 30; // November
    days[11] = 31; // December
    for (int month = 0; month < NUM_MONTHS; month++)
    {
        cout << "Month "<< setw (2) << (month+1) << " has ";
        cout << days[month] << " days.\n";
    }
    return 0;
}
Nach dem Login kopieren

Programmausgabe:

Month  1 has 31 days.
Month  2 has 28 days.
Month  3 has 31 days.
Month  4 has 30 days.
Month  5 has 31 days.
Month  6 has 30 days.
Month  7 has 31 days.
Month  8 has 31 days.
Month  9 has 30 days.
Month 10 has 31 days.
Month 11 has 30 days.
Month 12 has 31 days.
Nach dem Login kopieren

Glücklicherweise gibt es eine Option, mit der C++ Arrays beim Definieren initialisieren kann. Durch die Verwendung einer Initialisierungsliste können Sie alle Elemente eines Arrays beim Erstellen einfach initialisieren. Die folgende Anweisung definiert das Tages-Array und initialisiert es mit denselben Werten, die durch die Zuweisungsanweisungen im vorherigen Programm festgelegt wurden:

int days [NUM_MONTHS] = {31,28,31,30,31,30,31,31,30,31,30, 31};
Nach dem Login kopieren

Die Werte werden in den Array-Elementen in der Reihenfolge gespeichert, in der sie in der Liste erscheinen ( Der erste Wert 31 wird in Tagen[0] gespeichert, der zweite Wert 28 wird in Tagen[1] usw. gespeichert. Die folgende Abbildung zeigt den Inhalt des Arrays nach der Initialisierung.

So initialisieren Sie ein C++-Array

Das folgende Programm ist eine modifizierte Version des oben genannten Programms. Es initialisiert das Tages-Array bei seiner Erstellung, anstatt eine separate Zuweisungsanweisung zu verwenden. Beachten Sie, dass die Initialisierungsliste über mehrere Zeilen verteilt ist. Das Programm fügt außerdem ein Array von String-Objekten hinzu, um die Monatsnamen zu speichern:

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
    const int NUM_MONTHS = 12;
    string name[NUM_MONTHS]={ "January", "February", "March", "April", "May" , "June", "July", "August", "September", "october", "November", "December"};
    int days[NUM_MONTHS] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    for (int month = 0; month < NUM_MONTHS; month++)
    {
        cout << setw(9) << left << name[month] << " has ";
        cout << days [month] << " days. \n";
    }
    return 0;
}
Nach dem Login kopieren

Programmausgabe:

January   has 31 days.
February  has 28 days.
March     has 31 days.
April     has 30 days.
May       has 31 days.
June      has 30 days.
July      has 31 days.
August    has 31 days.
September has 30 days.
october   has 31 days.
November  has 30 days.
December  has 31 days.
Nach dem Login kopieren

Bisher haben Sie gezeigt, wie Sie das Array mit numerischen Werten füllen und dann alle Werte anzeigen. Manchmal sind jedoch möglicherweise weitere Funktionen erforderlich, z. B. das Abrufen eines bestimmten Werts aus einem Array. Das folgende Programm ist eine Variation des obigen Programms, das die vom Benutzer ausgewählte Anzahl der Tage in einem Monat anzeigt.

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
    const int NUM_MONTHS = 12;
    int choice;
    string name[NUM_MONTHS]={ "January", "February", "March", "April", "May" , "June", "July", "August", "September", "october", "November", "December"};
    int days[NUM_MONTHS] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    cout << "This program will tell you how many days are "<< "in any month.\n\n";
    // Display the months
    for (int month = 1; month <= NUM_MONTHS; month++)
        cout << setw (2) << month << " " << name [month-1] << endl;
    cout << "\nEnter the number of the month you want: ";
    cin >> choice;
    // Use the choice the user entered to get the name of
    // the month and its number of days from the arrays.
    cout << "The month of " << name [choice-1] << " has " << days[choice-1] << " days.\n";
    return 0;
}
Nach dem Login kopieren

Das Ausgabeergebnis des Programms ist:

This program will tell you how many days are in any month.

1 January
2 February
3 March
4 April
5 May
6 June
7 July
8 August
9 September
10 october
11 November
12 December

Enter the number of the month you want: 4
The month of April has 30 days.
Nach dem Login kopieren

Beginnen Sie mit Array-Element 1

Es gibt in der realen Welt viele Dinge, die logischerweise mit 1 beginnen Lehrer werden es vorziehen. Yu bittet die Schüler, Element 0 nicht zu verwenden, sondern stattdessen die tatsächlichen Daten ab Element 1 zu speichern. Ein gutes Beispiel ist die Anzahl der Monate im Jahr. In diesem Fall können Sie die Namens- und Tages-Arrays so deklarieren, dass sie jeweils 13 Elemente haben, und sie wie folgt initialisieren:

string name[NUM_MONTHS+1]={" ", "January", "February", "March", "April", "May" , "June", "July", "August", "September", "october", "November", "December"};
int days[NUM_MONTHS+1] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
Nach dem Login kopieren

Beachten Sie, dass Array-Element 0 nicht verwendet wird. Es ist nur ein virtueller Wert. Dadurch wird der Name Januar in Name[1], der Name Februar in Name[2] usw. gespeichert. Ebenso wird die Anzahl der Tage im Januar im Element „days[1]“ gespeichert, die Anzahl der Tage im Februar im Element „days[2]“ usw.

Wenn die obige Methode zum Definieren und Initialisieren des Arrays verwendet wird, sollte die Schleife wie folgt umgeschrieben werden. Es wird der Inhalt der Array-Elemente 1–12 anstelle der Elemente 0–11 wie zuvor angezeigt.

for (int month = 1; month <= NUM_MONTHS; month++)
{
    cout << setw(9) << left << name[month] << " has ";
    cout << days[month] << " days.\n";
}
Nach dem Login kopieren

Wenn die tatsächlichen Daten beginnend mit Element 1 gespeichert werden, ist es nicht erforderlich, 1 zum Array-Index hinzuzufügen, um bestimmte Daten zu finden. Das Folgende ist eine Modifikation der Anweisung, die die Nummer und den Namen jedes Monats auflistet:

for (int month = 1; month <= NUM_MONTHS; month++)
    cout << setw (2) << month << " " << name [month] << endl;
Nach dem Login kopieren

Der Code, der die Anzahl der Tage in dem vom Benutzer ausgewählten Monat anzeigt, sollte wie folgt geändert werden.

cout << "The month of " << name[choice] << " has "<< days [choice] << " days . \n";
Nach dem Login kopieren

Array-Teilinitialisierung

Wenn ein Array initialisiert wird, muss C++ nicht den Wert jedes Elements abrufen und kann auch nur einen Teil des Arrays initialisieren, wie unten gezeigt:

int numbers[7] = {1, 2, 4, 8};
Nach dem Login kopieren

Diese Definition initialisiert nur Die ersten 4 Elemente in einem 7-Elemente-Array sind in der folgenden Abbildung dargestellt.

So initialisieren Sie ein C++-Array
Abbildung 2

Es ist erwähnenswert, dass die nicht initialisierten Elemente in Abbildung 2 alle auf Null gesetzt werden. Dies geschieht, wenn das numerische Array teilweise initialisiert wird. Wenn ein Array von String-Objekten teilweise initialisiert wird, enthalten die nicht initialisierten Elemente alle leere Strings, also Strings der Länge 0. Dies gilt auch dann, wenn das teilweise initialisierte Array lokal definiert ist. Wenn ein lokales Array jedoch vollständig nicht initialisiert ist, enthalten seine Elemente genau wie andere lokale Variablen „Müll“.

Das folgende Programm zeigt den Inhalt des Zahlenarrays nach der teilweisen Initialisierung:

#include <iostream>
using namespace std;
int main ()
{
    const int SIZE = 7;
    int numbers[SIZE] = {1, 2, 4, 8}; // Initialize the first 4 elements
    cout << "Here are the contents of the array: \n";
    for (int index = 0; index < SIZE; index++)
    cout << numbers [index] << " ";
    cout << endl;
    return 0;
}
Nach dem Login kopieren

Programmausgabe:

Here are the contents of the array:
1 2 4 8 0 0 0
Nach dem Login kopieren

Obwohl die Array-Initialisierungsliste weniger Werte als die Elemente des Arrays haben kann, darf sie nicht mehr haben als die Elemente des Array-Werts. Die folgende Anweisung ist unzulässig, da das Zahlenarray nur 7 Werte enthalten kann, die Initialisierungsliste jedoch 8 Werte.

int numbers [7] = {1, 2, 4, 8, 3, 5, 7, 9};    //不合法
Nach dem Login kopieren

Wenn ein Element nicht initialisiert bleibt, sollten auch alle Elemente nach diesem Element nicht initialisiert bleiben. C++ bietet keine Möglichkeit, Elemente in einer Initialisierungsliste zu überspringen. Hier ist ein weiteres illegales Beispiel:

int numbers [7] = {1, , 4, , 3, 5, 7};    // 不合法
Nach dem Login kopieren

Implizite Array-Größe

可以通过提供一个包含每个元素值的初始化列表来定义一个数组而不指定它的大小。C++ 会计算初始化列表中的项目数,并为数组提供相应数量的元素。例如,以下定义创建 了一个包含5个元素的数组:

double ratings [] = {1.0,1.5,2.0,2.5,3.0};
Nach dem Login kopieren

注意,如果省略大小声明符,则必须指定一个初始化列表。否则,C++ 不知道该数组有多大。

初始化变量的新方法

到目前为止,已经介绍过的定义和初始化常规变量的方法是使用赋值语句,示例如下:

int value = 5;
Nach dem Login kopieren

但是,我们已经学习过使用函数、数组以及类,所以现在是时候来介绍另外两种在定义变量的同时即进行初始化的方法。

第一种新方法是使用函数符号初始化变量。它看起来就像是给一个函数传递参数。如果您已经掌握了类的内容,那么就会注意到,它也很像是在创建类对象时给一个构造函数传递值。以下是使用函数符号定义变量 value 并初始化其值为 5 的示例语句:

int value (5);
Nach dem Login kopieren

第二种初始化变量的新方法是 C++ 11 中新引入的,使用大括号表示法。它看起来就像是刚刚上面所看到的初始化数组的方法,但是其中有两点区别:

  • 因为常规变量只能一次保存一个值,所以通过这种方法初始化变量时,大括号中只有一个值;

  • 和数组初始化列表不一样,通过这种方法初始化变量时,在大括号前面没有赋值运算符(=)。

以下是使用大括号表示法定义变量 value 并初始化其值为5的示例语句。

int value{5}; //该语句仅在C++ 11或更高版本中合法
Nach dem Login kopieren

绝大多数程序员会继续使用赋值运算符来初始化常规变量,本书也将如此,但是,大括号表示法提供了一项优点,它会检查用来初始化变量的值,并确保匹配变量的数据类型。例如,假设 doubleVal 是一个 double 类型变量,存储在其中的值为 6.2。则使用赋值运算符时,可以编写以下两种形式的语句之一:

int valuel = 4.9;    //该语句将给valuel赋值为。4
int vaule2 = doubleVal;    // 该语句将给 value2 赋值为 6
Nach dem Login kopieren

在这两种情况下,值的小数点部分都会被先截断,然后才赋值给被定义的变量。这虽然可能会导致一些问题,但 C++ 编译器是允许的,它也会提出警告,但却仍然能生成可执行文件,并且可以运行。不过,如果在这里使用的是大括号表示法,则编译器会指出这些语句产生了一个错误,并且不会生成可执行文件。必须先修复该错误,然后重新编译项目才能运行该程序。

相关推荐:《C++视频教程

Das obige ist der detaillierte Inhalt vonSo initialisieren Sie ein C++-Array. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist die Rolle von CHAR in C -Saiten? Was ist die Rolle von CHAR in C -Saiten? Apr 03, 2025 pm 03:15 PM

In C wird der Zeichenentyp in Saiten verwendet: 1. Speichern Sie ein einzelnes Zeichen; 2. Verwenden Sie ein Array, um eine Zeichenfolge darzustellen und mit einem Null -Terminator zu enden. 3. Durch eine Saitenbetriebsfunktion arbeiten; 4. Lesen oder geben Sie eine Zeichenfolge von der Tastatur aus.

Vier Möglichkeiten zur Implementierung von Multithreading in C -Sprache Vier Möglichkeiten zur Implementierung von Multithreading in C -Sprache Apr 03, 2025 pm 03:00 PM

Multithreading in der Sprache kann die Programmeffizienz erheblich verbessern. Es gibt vier Hauptmethoden, um Multithreading in C -Sprache zu implementieren: Erstellen Sie unabhängige Prozesse: Erstellen Sie mehrere unabhängig laufende Prozesse. Jeder Prozess hat seinen eigenen Speicherplatz. Pseudo-MultitHhreading: Erstellen Sie mehrere Ausführungsströme in einem Prozess, der denselben Speicherplatz freigibt und abwechselnd ausführt. Multi-Thread-Bibliothek: Verwenden Sie Multi-Thread-Bibliotheken wie PThreads, um Threads zu erstellen und zu verwalten, wodurch reichhaltige Funktionen der Thread-Betriebsfunktionen bereitgestellt werden. Coroutine: Eine leichte Multi-Thread-Implementierung, die Aufgaben in kleine Unteraufgaben unterteilt und sie wiederum ausführt.

Berechnung des C-Subscript 3-Index 5 C-Subscript 3-Index 5-Algorithmus-Tutorial Berechnung des C-Subscript 3-Index 5 C-Subscript 3-Index 5-Algorithmus-Tutorial Apr 03, 2025 pm 10:33 PM

Die Berechnung von C35 ist im Wesentlichen kombinatorische Mathematik, die die Anzahl der aus 3 von 5 Elementen ausgewählten Kombinationen darstellt. Die Berechnungsformel lautet C53 = 5! / (3! * 2!), Was direkt durch Schleifen berechnet werden kann, um die Effizienz zu verbessern und Überlauf zu vermeiden. Darüber hinaus ist das Verständnis der Art von Kombinationen und Beherrschen effizienter Berechnungsmethoden von entscheidender Bedeutung, um viele Probleme in den Bereichen Wahrscheinlichkeitsstatistik, Kryptographie, Algorithmus -Design usw. zu lösen.

Unterschiedliche Funktionsnutzungsabstand Funktion C -Verwendung Tutorial Unterschiedliche Funktionsnutzungsabstand Funktion C -Verwendung Tutorial Apr 03, 2025 pm 10:27 PM

STD :: Einzigartige Entfernung benachbarte doppelte Elemente im Container und bewegt sie bis zum Ende, wodurch ein Iterator auf das erste doppelte Element zeigt. STD :: Distanz berechnet den Abstand zwischen zwei Iteratoren, dh die Anzahl der Elemente, auf die sie hinweisen. Diese beiden Funktionen sind nützlich, um den Code zu optimieren und die Effizienz zu verbessern, aber es gibt auch einige Fallstricke, auf die geachtet werden muss, wie z. STD :: Distanz ist im Umgang mit nicht randomischen Zugriffs-Iteratoren weniger effizient. Indem Sie diese Funktionen und Best Practices beherrschen, können Sie die Leistung dieser beiden Funktionen voll ausnutzen.

Wie kann ich die Schlangennomenklatur in der C -Sprache anwenden? Wie kann ich die Schlangennomenklatur in der C -Sprache anwenden? Apr 03, 2025 pm 01:03 PM

In der C -Sprache ist die Snake -Nomenklatur eine Konvention zum Codierungsstil, bei der Unterstriche zum Verbinden mehrerer Wörter mit Variablennamen oder Funktionsnamen angeschlossen werden, um die Lesbarkeit zu verbessern. Obwohl es die Zusammenstellung und den Betrieb nicht beeinträchtigen wird, müssen langwierige Benennung, IDE -Unterstützung und historisches Gepäck berücksichtigt werden.

Verwendung von Veröffentlichungen in C. Verwendung von Veröffentlichungen in C. Apr 04, 2025 am 07:54 AM

Die Funktion Release_Semaphor in C wird verwendet, um das erhaltene Semaphor zu freigeben, damit andere Threads oder Prozesse auf gemeinsame Ressourcen zugreifen können. Es erhöht die Semaphorzahl um 1 und ermöglicht es dem Blockierfaden, die Ausführung fortzusetzen.

Probleme mit der Dev-C-Version Probleme mit der Dev-C-Version Apr 03, 2025 pm 07:33 PM

DEV-C 4.9.9.2 Kompilierungsfehler und -lösungen Wenn das Kompilieren von Programmen in Windows 11-System mit Dev-C 4.9.9.2 kompiliert wird, kann der Compiler-Datensatz die folgende Fehlermeldung anzeigen: GCC.EXE: INTERNEHERERROR: ABTREIDED (programmcollect2) pleasSubMitAfulbugrort.SeeforinSructions. Obwohl die endgültige "Kompilierung erfolgreich ist", kann das tatsächliche Programm nicht ausgeführt werden und eine Fehlermeldung "Original -Code -Archiv kann nicht kompiliert werden" auftauchen. Dies liegt normalerweise daran, dass der Linker sammelt

C- und Systemprogrammierung: Steuerung und Hardware-Interaktion mit niedriger Ebene C- und Systemprogrammierung: Steuerung und Hardware-Interaktion mit niedriger Ebene Apr 06, 2025 am 12:06 AM

C eignet sich für die Systemprogrammierung und Hardware-Interaktion, da es Steuerfunktionen in der Nähe von Hardware und leistungsstarke Funktionen der objektorientierten Programmierung bietet. 1) C über Merkmale auf niedrigem Niveau wie Zeiger, Speicherverwaltung und Bitbetrieb können effizienter Betrieb auf Systemebene erreicht werden. 2) Die Hardware -Interaktion wird über Geräte -Treiber implementiert, und C kann diese Treiber so schreiben, dass sie mit Hardware -Geräten über die Kommunikation umgehen.

See all articles