You cannot pass "an entire array to a function" -- C does not do this. Instead, you are passing a pointer to the first element of the array.
main() { int array[3] = {0, 1, 2, 3};
main should be declared int main(int argc, char* argv[]). It's not that horrible to type, and you can even get your text editor to do it for you, if you care enough.
You have declared array to contain only three items, but store four items into the array. This should have thrown a compile warning at the least. Pay attention to those warnings. Don't specify the size of your array unless that size is vital (Say, if you wanted to keep track of US states, then int states[50] = { ... }; might make sense. For now. Maybe this is a bad example.)
for(i=0; i<=n; i++) { printf("\n%d", *j); j++;
for(i=0; i<=n; i++) is very often a bug -- C array indexes run from 0 to n-1, not 0 to n. You're reading one-past-the-array, and that value is not surprisingly garbage.
Further this code is awkward; you should just use printf("\n%d", j[i]) and not increment j each time. Incrementing two variables as "loop variables" this way is a recipe for writing bugs in the future. (If you need to update two variables with every loop iteration, place both in the last section of the for(;;i++, j++) loop.)