Hate to ask the stupid question, but I've been wondering and it seems to be along the same lines... Why can't this be valid?
int f;
f = 2;
To me this says, there is an int pointer f. Let f point to 2. Is this not possible only because 2 does not occupy memory? I don't see why this couldn't be valid.
Comments
Hate to ask the stupid question, but I've been wondering and it seems to be along the same lines... Why can't this be valid?
int f; f = 2;
To me this says, there is an int pointer f. Let f point to 2. Is this not possible only because 2 does not occupy memory? I don't see why this couldn't be valid.
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.