¿Hay alguna diferencia entre foo (int * arr) y foo (int arr )?

¿Hay alguna diferencia entre

foo(int* arr) {} 

y

foo(int arr[]){} ?

Gracias

No, no hay diferencia entre los dos.

No hay diferencia para el comstackdor de C. Hay una diferencia para el progtwigdor que lee el código sin embargo.

Aquí, arr es un puntero a un entero (posiblemente para devolver el resultado de la función):

 foo(int* arr) {} 

Aquí, arr es un puntero al primer entero en una matriz (posiblemente para pasar una lista de números dentro y / o fuera de la función):

 foo(int arr[]) {} 

Además, sería útil especificar el tipo de retorno de la función.

La semántica es la misma, pero para un progtwigdor externo, es más fácil e inmediato de entender: la segunda función toma una matriz como argumento. No podría ser tan inmediato para el primero.

Tendrás que desreferir valores al primero …