Salve a tutti, volevo sapere se qualcuno conosce un modo in C, per
calcolare il numero di elementi di un vettore di interi (cioè per scorrerlo tutto), avendo a
disposizione il solo puntatore al vettore!!! AIUTOOOOOOO...![]()
Salve a tutti, volevo sapere se qualcuno conosce un modo in C, per
calcolare il numero di elementi di un vettore di interi (cioè per scorrerlo tutto), avendo a
disposizione il solo puntatore al vettore!!! AIUTOOOOOOO...![]()
Spero di non dire una ca$$ata
ma se 1 intero sono 2 Byte
e tu hai il puntatore al vettore
printf("NUMERO ELEMENTI %d",sizeof(Puntatore)/2);
non mi picchiate se ho sbagliato ^^;
Ho provato la riga di codice che mi hai proposto, ma purtroppo non funziona...![]()
a questo punto mi pongo una domanda, perchè su AIX il tipo di dato intero è definito di 4 Byte ?? ^^;
I sistemi operativi a 32bit trattano i tipi interi con 4byte
Ma come è definito il tuo puntatore e soprattutto che tipo di errore ti dà ??
Non mi da nessun errore, però il numero degli elementi è sbagliato(ad es. il vettore che gli passo ha 51 elementi, mentre, con quella riga di codice mi stampa 1, forse perchè la sizeof la fa sul solo puntatore , cioè il primo elemento del vettore e non sull'intero vettore). Comunque ho un prototipo come questo: char* intToChar(int *vett);
Ed è su vett che ho bisogno di conoscere la grandezza per scorrerlo tutto.
Grazie
Beh se lo hai indirizzato così
ptr=&array
non otterrai mai nulla perchè array è un puntatore al 1° elemento dell'array che è uguale a 2byte e quindi due diviso due uguale 1
non hai bisogno di puntantori. Fai così
#include <stdio.h>
int array[4];
int main()
{
printf("L'arrray ha %d elementi",sizeof(array)/2);
getchar();
return 0;
}
in questo modo array non punta al primo elemento dell'array ma con sizeof ottieni l'intera dimensione dell'array
Ciao![]()