[TUHS] C declarations.

Arthur Krewat krewat at kilonet.net
Fri May 12 08:01:36 AEST 2017


But wouldn't that imply you didn't need to use the * when referencing 
the actual value?

For example, if you do this:

char *p;
char c;

The correct way to get the character it's pointing to dereference like this:

c=*p;

If the type was char* (not char)

Wouldn't that imply I wouldn't need the * to dereference the pointer?




On 5/11/2017 5:49 PM, Ron Natalie wrote:
> Bjarne agrees with you.   He put the * (and the &) with the type name to emphasize it is part of the type.
> This works fine as long as you only use one declaration per statement.
>
> The problem with that is that * doesn't really bind to the type name.   It binds to the variable.
>
> char* cp1, cp2;   // cp1 is pointer to char,   cp2 is just a char.
>
> I always found it confusing that the * is used to indicate an pointer here, where as when you want to change an lvalue to a pointer, you use &.
>
> But if we're going to gripe about the evolution of C.   My biggest gripe is when they fixed structs to be real types, they didn't also do so for arrays.
> Arrays and their  degeneration to poitners is one of the biggest annoyances in C.
>
>> Am I the only one here who thinks that e.g. a char pointer should be
>> "char* cp1, cp2" instead of "char *cp1, *cp2"?  I.e. the fundamental type is "char*", not "char", and to this day I still write:
>
>
>




More information about the TUHS mailing list