Comment on What is C in practice?parentComments−dllthomas11yAssuming you're asking about int *f; *f = 2; The statement, *f = 2; says "dereference f to get a location; set the contents of that location to 2". "Set f to the location of 2" would be spelled f = &2; This is partly a matter of the difference between assignment and definition(/equality).The first of these is invalid C (undefined behavior) because it uses a value (the contents of f) before initialization.The second is invalid C (compile error) because 2 is not an l-value (that is, it does not have a location).Edited to add: I will note that I don't think there is any reason *f = 2; couldn't mean to give f the addess of 2, as by analogy to structural pattern matching, but that the syntax is already taken for something else.
Comments
Assuming you're asking about
The statement, says "dereference f to get a location; set the contents of that location to 2". "Set f to the location of 2" would be spelled This is partly a matter of the difference between assignment and definition(/equality).The first of these is invalid C (undefined behavior) because it uses a value (the contents of f) before initialization.
The second is invalid C (compile error) because 2 is not an l-value (that is, it does not have a location).
Edited to add: I will note that I don't think there is any reason
couldn't mean to give f the addess of 2, as by analogy to structural pattern matching, but that the syntax is already taken for something else.