jse (01/31/83)
Suppose you are given the following formal parameter declaration: int (*x)[]; What type is x? My first thought was 'pointer to pointer to int', because page 95 of K&R says that 's[]' and '*s' are equivilent as formal paramters in a function definition, so I converted it to *(*x). But this is wrong. The K&R book would seem to say that this is a multi-dimensional array, except that it says you are required to give the constant between the brackets (pages 105 and 195). The vax C compiler seems to treat it as a multi-dimensional array, but one that is declared int x[][0]; although you can't use this declaration yourself (it will let you use int (*x)[0] tho). So x[0][0] and x[1][0] reference the same location! In the context in which I encountered this declaration, it was intended that x be a pointer to an array, so I tried to pass the address of the first element of the array but lint complained of a type mismatch. Is 'int (*x)[]' legitimate? I know 'int (*x)[5]' is legitimate, declaring x to be a pointer to an array of 5 integers (x+1 points to the next array of 5 integers). But I don't see why I shouldn't be able to convert 'int (*x)[]' to 'int **x'. Is there any reason why you would really want to use 'int (*x)[]' for pointer to array rather than the simpler 'int *x'? I would appreciate it if someone can provide further insight. Jan Edler pyuxll!jse (abi piscataway) cmcl2!edler (nyu) edler@nyu.arpa (I think this works)