12/30/05 5:45 AM, "Camillo Lugaresi" <camillo.lists (AT) gmail (DOT) comwrote:
30/dic/05, at 11:10, Andreas Mayer wrote:
>
>Am 29.12.2005 um 21:39 Uhr schrieb Clark Cox:
>
what is confusing about the syntax?
If (ptr) is a pointer, then (*ptr) is whatever it points at
>
>Umm what's *not* confusing about that syntax?
>
>* is usually associated with multiplication.
>
>And as Pontus pointed out, it doesn't help that the same symbol is
>used in the declaration of pointers. To make things worse, it's
>customary to write int *ptr instead of int* ptr, which would
>be more accurate in my opinion. The '*' modifies the type, after
>all, not the identifier.
Wrong!
int *a, b;
What type is b? int. If you want two pointers to int, write:
int *a, *b;
C++ programmers will tend to put the * or & (for references) near the type
(where it makes more sense for readability and maintainability.) And since
the entire type-before-the-name convention in C/C++ is something of a failed
experiment, the declarations are best made on separate lines for the same
reasons:
int* b;
int* a;
It's also useful when declaring types:
typedef struct {
int x;
int y;
} Point, *PointPtr;
A C++ programmer would likely name the struct "Point" and use a typedef to
name PointPtr.
>Then there is the & operator, which is often used in conjunction
>with pointers; and of course, this character does have a different
>meaning when used as a binary operator.
But there's never any ambiguity about whether the operator is unary
or binary in an expression.
Never? The * operator is inherently ambiguous. Consider:
a * b;
Is b a pointer to a or is the expression a multiplied by b? Without any
context it is impossible to know for sure. Either interpretation constitutes
a legal expression in C.
Greg
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list (Cocoa-dev (AT) lists (DOT) apple.com)
Help/Unsubscribe/Update your Subscription:
%40developershed.com
This email sent to bsdarchive (AT) developershed (DOT) com