Wenn du die Funktion mit "void start(int speed)" definierst, wird beim Aufruf eine für diese Funktion lokale Variable "speed" erzeugt. Diese ist nicht identisch mit der beim Programmstart global definierten gleichnamigen Variablen. Wenn du aber mit "void start(void)" keine Parameterübergabe festlegst, verwendet start() die selbe Variable wie main(). Dann wird die Änderung an der globalen Variablen durchgeführt.