Nanako Shiraishi <nanako3@xxxxxxxxxxx> writes: > Quoting Junio C Hamano <gitster@xxxxxxxxx> > >> I queued to ease the discussion in 'pu'. I had to fix-up some conflicts >> while doing so. Please sanity check the result. > > I see that you changed many "char* variable" to "char *variable", but > what is the reason for these changes? Nico already gave you correct and more concise version; this more verbose explanation is primarily for you who said a few times that you are not fluent in C. Others can skip this message without missing anything. I haven't asked people why they choose to write like this: char* string; beyond "that is how we were taught and what we are used to". But if I have to guess, it is because it makes it appear as if you are being consistent between basic types like "int" and pointer types like "char *". E.g. these both look like "<type> <variable>;" int variable; char* variable; The example in CodingGuidelines gives a clear illustration that this however is not the way how C language works. IOW, the syntax for declaration is not "<type> <var1>, <var2>,...;". E.g. char* var1, var2; declares var1, which is a pointer to a char, and var2, which is a char. That is what Nico means by '* is an attribute of the variable and not of the type'. The only sane way to read declaration in C is to read from inside to outside, starting from a variable name. When you read "char **argv", for example, you treat it as "char (*(*argv))", and read it from the variable name: - It declares argv; what's the type of it I wonder... - It is a pointer, because the asterisk in front of it tells us that we can dereference it. Now, what's the type of the result of dereferencing argv, i.e. "*argv", I wonder... - That "*argv" is a pointer, because the asterisk in front of it again tells us that we can dereference it. Now, what's the type of dereferencing that "*argv", i.e. "**argv", I wonder... - Ah, it is a "char", that is what this declaration says. And the style we use (which is the same as Linux kernel style) naturally matches the way how you read this declaration. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html