Well, you definately CAN do that ( first example ). But if you want to change a variable by a function, you have to do it with pointers ( & in c-script, second example ).
But if you pass zero to the second function which expects a pointer to a variable, the error will occur if the engine tries to refer to the location in the memory, by the pointer information (because the pointer points at "zero", it is an empty pointer).

The great thing about the pointer parameter is that you can change a variable / array within another function. Means, you have to take a variable, not a value, for a parameter in the function:

function test(&a)
{
a[0] = 2;
}

var01 = 1; //var01 is 1
test(var01);
//var01 is 2 now

If you would code it without the pointer syntax:

function test(a)
{
a = 2;
}

var01 = 1; //var01 is 1
test(var01);
//var01 is still 1

the variable ( var01 ) will stay unchanged.

Sinthoras

@Firoball: Wow, that's a really strange thing.. I didn't know that. C-script is a very unusual language ^^. I tried it, and it really works. I would NEVER have expected that (before you said it). This means, "var" is not a single "long" type, but three?? What a waste of memory