void f2(int argv[3]) {
//here argv is a variable containing an address
//argv[0] == *argv;
//I can also say ++argv;
}
void f3(int *argv)
void f () {
char argv[3]; //argv==&argv[0]. can't assign to this argv.
//char *argv; /argv is a place containing an address. can even assign to it.
f2(argv); //the address, so far not stored anywhere, is copied into f2's var
}
----
conclusion:
Inside a function, a local variable char x[] is different from char *x, which can also be assigned to.
In a function signature, the only thing is char *x. char x[] is only for documentation purposes. It tells you that besides x, x+n is also possibly a valid pointer.
int main(int argc, char **argv) {
}