2012-12-04 6 views
-2

J'aimerais savoir combien d'éléments j'ai entre deux pointeurs sur une tabulation, avec une fonction.Trouver l'intervalle entre deux pointeurs sur un onglet en c

Par exemple, dans ce code, nb serait 20.

int main(void) 
{ 
    int t[50] = {0}; 
    int nb; 

    nb = finding_number_element(&t[10], &t[30]); 
    return (0); 
} 

Avez-vous une idée?

+1

Je ne suis pas sûr de ce que vous demandez ... qu'est-ce que vous entendez par « onglet »? Votre démonstration retourne "20", donc vous voulez le nombre d '"éléments" (étant "int" dans ce cas) entre deux emplacements de mémoire? – Mike

+0

Il y a plusieurs choses que vous pourriez aider à clarifier/définir: Quelles sont vos définitions d'intervalle, d'élément et d'onglet? – Nocturno

+0

Exactement Mike, je voudrais avoir le nombre d '"éléments" entre deux emplacements de mémoire. – LOLKFC

Répondre

1

Essayez

int finding_number_element(int *a, int *b) 
{ 
    return (b - a); 
} 

si a et b seront des pointeurs vers le même tableau que cela devrait fonctionner.

+2

Serait plus joli de faire les pointeurs 'const', et retourner' ptrdiff_t'. – unwind

+0

+1 c'est vrai; – codewarrior

1

Si vous avez besoin quelque chose qui ne se soucie pas du type de données de t

#define ele_size(x) sizeof(x[0]) 

int main(void) 
{ 
    int t[50] = {0}; 

    int nb; 
    nb = finding_number_element(ele_size(t),&t[10], &t[30]); 
    return (0); 
} 

int finding_number_element(unsigned int ui_ele_size, void *a, void *b) 
{ 
    unsigned int ui_pointer1 = (unsigned int)a; 
    unsigned int ui_pointer2 = (unsigned int)b; 

    return ((b - a)/ui_ele_size); 

} 
Questions connexes