[C++] Comment trouver la taille d'un int []?


Answers

La manière "standard" C de le faire est

sizeof(list) / sizeof(list[0])
Question

j'ai

int list[] = {1, 2, 3};

Comment puis-je obtenir la taille de la list ?

Je sais que pour un tableau de char. Nous pouvons utiliser strlen(array) pour trouver la taille, ou vérifier avec '\0' à la fin du tableau.

J'ai essayé sizeof(array) / sizeof(array[0]) comme certaines réponses l'ont dit, mais cela ne fonctionne que dans main? Par exemple:

int size(int arr1[]){
    return sizeof(arr1) / sizeof(arr1[0]);
}

int main() {
    int list[] = {1, 2, 3};

    int size1 = sizeof(list) / sizeof(list[0]); // ok
    int size2 = size(list_1); // no
    // size1 and size2 are not the same
}

Pourquoi?




Vous ne pouvez pas faire cela pour un tableau alloué dynamiquement (ou un pointeur). Pour les tableaux statiques, vous pouvez utiliser sizeof(array) pour obtenir la taille totale du tableau en octets et la diviser par la taille de chaque élément:

#define COUNTOF(x) (sizeof(x)/sizeof(*x))

Pour obtenir la taille d'un tableau dynamique, vous devez le garder manuellement et le passer avec lui, ou le terminer avec une valeur sentinelle (comme '\ 0' dans les chaînes terminées nulles).

Mise à jour: je me suis rendu compte que votre question est étiquetée C ++ et non C. Vous devriez certainement envisager d'utiliser std::vector au lieu de tableaux en C ++ si vous voulez passer des choses:

std::vector<int> v;
v.push_back(1);
v.push_back(2);
std::cout << v.size() << std::endl; // prints 2



Outre la réponse de Carl, la méthode C ++ "standard" n'est pas d'utiliser un tableau C int , mais plutôt quelque chose comme une liste STL std::vector<int> list C ++ que vous pouvez interroger pour list.size() .




Vous devez utiliser la fonction sizeof ().

Extrait de code:

#include<bits/stdc++.h>
using namespace std;

int main()
{
      ios::sync_with_stdio(false);

      int arr[] ={5, 3, 6, 7};

      int size = sizeof(arr) / sizeof(arr[0]);
      cout<<size<<endl;

      return 0;
}