1165 Stimmen

Wie initialisiert man alle Mitglieder eines Arrays auf denselben Wert?

Ich habe ein großes Array in C (nicht C++ falls das einen Unterschied macht). Ich möchte alle Mitglieder mit demselben Wert initialisieren.

Ich könnte schwören, dass ich einmal eine einfache Möglichkeit kannte, dies zu tun. Ich könnte verwenden memset() in meinem Fall, aber gibt es nicht eine Möglichkeit, dies zu tun, die direkt in die C-Syntax eingebaut ist?

1voto

Ruthvik Vanam Punkte 55

Mit Nullen initialisieren -

  char arr[1000] = { 0 };

Es ist besser, mit einer normalen "for-Schleife" für die Initialisierung andere als 0 zu tun.

  char arr[1000];
  for(int i=0; i<arr.size(); i++){
     arr[i] = 'A';
  }

0voto

Methode 1 :

int a[5] = {3,3,3,3,3}; 

formale Initialisierungstechnik.

Methode 2 :

int a[100] = {0};

aber es ist erwähnenswert, dass

int a[10] = {1}; 

initialisiert nicht alle Werte auf 1

diese Art der Initialisierung ausschließlich für 0

wenn Sie einfach tun

int a[100];

einige Compiler neigen dazu, Garbage Value zu nehmen, daher ist es immer vorzuziehen, die

int a[1000] = {0};

0voto

Pavel Vazharov Punkte 105

Nur als Fortsetzung der Antwort von Clemens Sielaff. Diese Version benötigt C++17.

template <size_t Cnt, typename T>                                               
std::array<T, Cnt> make_array_of(const T& v)                                           
{                                                                               
    return []<size_t... Idx>(std::index_sequence<Idx...>, const auto& v)        
    {                                                                           
        auto identity = [](const auto& v, size_t) { return v; };                
        return std::array{identity(v, Idx)...};                                 
    }                                                                           
    (std::make_index_sequence<Cnt>{}, v);                                       
}

Sie können es in Aktion sehen aquí .

-1voto

Mike Punkte 2593

Früher (und ich sage nicht, dass das eine gute Idee ist), haben wir das erste Element gesetzt und dann:

memcpy (&element [1], &element [0], sizeof (element)-sizeof (element [0]);

Ich bin mir nicht einmal sicher, ob es noch funktionieren würde (das würde von der Implementierung von memcpy abhängen), aber es funktioniert durch wiederholtes Kopieren des Anfangselements in das nächste - es funktioniert sogar für Arrays von Strukturen.

-2voto

Dadhich Sourav Punkte 271
#include<stdio.h>
int main(){
int i,a[50];
for (i=0;i<50;i++){
    a[i]=5;// set value 5 to all the array index
}
for (i=0;i<50;i++)
printf("%d\n",a[i]);
   return 0;
}

Es wird die o/p 5 5 5 5 5 5 ...... bis die Größe des gesamten Arrays

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X