[C] Comprobar si un array de int está vacío

Pizzelio

Buenas, tengo que hacer un ejercicio que consiste en escribir una función que devuelva 0 si el array de int que le pasan está vacío. La función sería algo así:

int mi_funcion (int* tab, unsigned int size);

El caso es que el ejercicio es una chorrada pero no sé como comprobar si el tab que le pasan está vacío o no. Size es el tamaño del array.

Gracias!

r2d2rigo

Literalmente te estan pasando el TAMAÑO del array en el segundo parametro...

cabron

¿de qué color era el caballo blanco de Santiago?

1 respuesta
eXtreM3

#3 yo esa pregunta siempre la entendía como que Blanco era el nombre del caballo, y decía pues yo que sé si no lo veo cómo lo voy a saber :joy:

Pizzelio

El array puede tener el tamaño reservado pero estar vacío de contenido, no?

1 respuesta
B

Haces un bucle comprando cada elemento del array, si está null el elemento es "vacío". Si lo estan todos los elementos , el array está vacía.

1 respuesta
cabron

#5

No existe el concepto de vacío en un array en C, si tu reservas la memoria con malloc, lo mismo te da un bloque de memoria que ya ha sido usado antes y liberado, y sabe dios que valores tiene, la única excepción son los arrays declarados como globales que se inicializan a 0 todos los elementos, pero estamos en las mismas, no puedes diferenciar de si es que nadie ha tocado el array, o es que alguien le ha metido todo ceros.

#6

No existe null en C. Si fuese una cadena se usa un carácter especial para saber donde termina, si fuese un puntero puedes usar el valor especial NULL (que depende de la implementación pero en la práctica suele equivaler al valor 0) para saber que ha fallado la reserva de memoria, pero no existe el concepto de que un array valga null en todos sus elementos por que no ha sido inicializado.

2 1 respuesta
Pizzelio

#7 vaaale, ahora lo entiendo.

Muchas gracias tío

Usuarios habituales