Powiel możliwe:
length of array in function argumentJak uzyskać długość tablicy wskaźnika C?
Czy istnieje jakiś sposób jak Java może .length z tablicy litera c? Dziękuję Ci.
Powiel możliwe:
length of array in function argumentJak uzyskać długość tablicy wskaźnika C?
Czy istnieje jakiś sposób jak Java może .length z tablicy litera c? Dziękuję Ci.
Nie, biorąc pod uwagę wskaźnik C, nie można określić jego długości w sposób niezależny od platformy.
Dla rzeczywiste tablica C chociaż zobaczyć dirkgently znajduje answer
Można dostać go za pomocą makra:
#define sizeofa(array) sizeof array/sizeof array[ 0 ]
wtedy i tylko wtedy, gdy tablica jest automatyczny i masz do niego dostęp w ramach swojej definicji jako:
#include <stdio.h>
int main() {
int x[] = { 1, 2, 3 };
printf("%zd\n", sizeofa(x));
return 0;
}
Jednakże, jeśli masz tylko (zepsute) wyżeł nie można uzyskać długość tablicy, bez uciekania się do pewnego zakaz przenośnego realizacji określony hack.
"% z" ?? co masz na myśli? – user411313
* z * _Określa, że następujący specyfikator konwersji d, i, o, u, x lub X ma zastosowanie do 'size_t' lub odpowiedniego argumentu typu ze znakiem; lub że następujący n specyfikacji konwersji dotyczy wskaźnika do typu liczby całkowitej ze znakiem odpowiadającego argumentowi size_t._ – dirkgently
To makro wymaga o wiele więcej nawiasów, aby uniknąć typowych problemów z makrami. –
Jeśli używasz MSVC/MinGW jest nieprzenośnej rozwiązanie dla prawdziwego C-pointer:
#include <malloc.h>
char *s=malloc(1234);
#ifdef __int64
printf("%lu\n", _msize(s));
#else
#endif
Dla prawdziwego C-Array jak
AnyType myarray[] = {...};
lub
AnyType myarray[constVal];
zobacz drugą odpowiedź.
Pytanie nie jest bardzo jasne; Zawsze możesz uzyskać długość tablicy, jeśli jej definicja ma zasięg lokalny ;-) – dirkgently
@ amirently, zgadzam się, nie jest jasne, czy pytają o długość wskaźnika lub długość tablicy. Przekierowałem ich do twojej odpowiedzi na tę ostatnią – JaredPar