Una función tiene:
Una función se puede declarar en cualquier parte pero nunca dentro de otra función.
Para llamar una función se escribe la variable donde se quiere guardar su valor de retorno el signo de asignación el nombre de la función y entre paréntesis los parámetros ordenados (todos) que necesita recibir la función.
if( NombreFuncion(10,z)){...}no se pondría.
En un mismo programa variables que estén en diferentes funciones no interfieren , es decir si llamas a una función y envías como parámetro la variable a y luego dentro de la función se declara una variable a no genera ningún problema lo que no se puede hacer es declarar una variable que genere ambigüedad con los parámetros que recibe.
¿Que sucede cuando se llama a una función?
Lo primero que se hace es reservar memoria para los parámetros que recibe la función y se copian en ella los datos que se le pasan, en caso de ser un valor se almacena este en caso de ser una variable se almacena el valor de esta variable.
Se ejecutan las ordenes de manera secuencial, dentro de estas ordenes puede estar la de reservar más espacio para almacenar nuevas variables.
Estas ordenes se ejecutaran hasta encontar el fin de la función determinado por el cierre de llaves del cuerpo principal (puede haber más aperturas y cierres de llaves debidos a sentencias de control por ejemplo) o encontrar una sentencia return.
Una vez que se encuentra la sentencia return libera toda la memoria reservada que se ha usado en la función.
Cuando se realiza una llamada a una función esta siempre se busca en la parte superior del código, si no se encuentra en la parte superior entonces dará error, una forma de solucionar esto es colocar la función en la parte superior o poner una declaración de la función( esto consiste en poner al principio del código una expresión simplificada del valor de retorno nombre de la función y entre paréntesis la lista de tipos de los valores que va a recibir)
La función main () todos los programas en C tiene por lo menos una función la función principal o main que es a la que se llama cuando se ejecuta el programa, y este termina cuando se llega al return o a su llave de cierre que devuelve el control a OS sistema operativo.