|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Hello,
I have a struct defined thus: typedef struct myStruct { int j; } myStruct; I saw somewhere calls with the following syntax: f1(&*a) What should be the protype of f1 so that it will be correct and so that compilation will succeed ? I am talking about two cases: In the first, we have the following definition: myStruct a; in the second, we have myStruct* a; Is it possible with both case to have a definition of f1() so that f1(&*a) will be correct and pass compilation ? Any ideas? Ian |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
On 17 Oct, 10:24, "ian...@gmail.com" <ian...@gmail.com> wrote:
> I have a struct defined thus: > > typedef struct myStruct > { > int j; > > } myStruct; > > I saw somewhere calls with the following syntax: > f1(&*a) > > What should be the protype of f1 so that it will be correct and > so that compilation will succeed ? > > I am talking about two cases: > In the first, we have the following definition: > myStruct a; > > in the second, we have > myStruct* a; > > Is it possible with both case to have a definition of f1() so that > f1(&*a) will be correct and pass compilation ? > > Any ideas? this looks like homework to me... -- Nick Keighley |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Nick Keighley wrote:
> On 17 Oct, 10:24, "ian...@gmail.com" <ian...@gmail.com> wrote: > >> I have a struct defined thus: >> >> typedef struct myStruct >> { >> int j; >> >> } myStruct; >> >> I saw somewhere calls with the following syntax: >> f1(&*a) [To the OP] Really? Where? What do you think it will do? > this looks like homework to me... It looks like bovine excrement to me. |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
struct name { /* ... */ };
ret f(struct name *); struct name obj1, *obj2, obj3[1], **obj4; f(&obj); f(obj2); f(obj3); f(*obj4); Etc. `&*p' == `&p[0]' |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
On Wed, 17 Oct 2007 09:24:50 -0000, "ianbrn@gmail.com"
<ianbrn@gmail.com> wrote: >Hello, >I have a struct defined thus: > >typedef struct myStruct >{ > int j; >} myStruct; > >I saw somewhere calls with the following syntax: >f1(&*a) It would if we new what a was. What do you think the effect of the combined & and * operators is? For extra points, would it make a difference if the operators were reversed? What is the only possible type the expression &*a (or *&a) can have (on those occasions when it is a legal expression)? > >What should be the protype of f1 so that it will be correct and >so that compilation will succeed ? The prototype is not the problem. > >I am talking about two cases: >In the first, we have the following definition: >myStruct a; What happens when you apply the * operator to a struct? > >in the second, we have >myStruct* a; > >Is it possible with both case to have a definition of f1() so that >f1(&*a) will be correct and pass compilation ? While passing an incompatible type to a function possibly could be "corrected" by changing the prototype, what makes you think a prototype can magically correct a syntax error? Again, what happens when you apply the * operator to a struct? > >Any ideas? Yes. Make a note of the author who wrote the call to f1. Then make sure you never again take anything written by him seriously. Remove del for email |
|
![]() |
| Outils de la discussion | |
|
|