Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Structure setup with typedef and pointers

Posted on 2011-02-23
9
Medium Priority
?
365 Views
Last Modified: 2012-05-11
Hi *,

Currently I define my structures as in the first attached example.

What are the advantages of using the second example? I understand that it may be for convenience so that then when passing this structure through functions, one only need put name, instead of *name and &name.

Cheers,
James
typedef struct {
    int x;
    int y[10][10];
} name;

typedef struct {
    int x;
    int y[10][10];
} name_t;
typedef name_t *name;

Open in new window

0
Comment
Question by:James_h1023
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
  • 2
  • +1
9 Comments
 
LVL 44

Accepted Solution

by:
AndyAinscow earned 252 total points
ID: 34967707
As far as I understand it the typedef statement is really for convenience to help make code more readable.
0
 
LVL 53

Assisted Solution

by:Infinity08
Infinity08 earned 248 total points
ID: 34967771
Actually, I would say that the second makes it LESS readable. Especially if the point is to save typing one character (the * character).

Seeing the * character in code is very important to know that something is a pointer, and not a full object. Obscuring that information (for sake of "convenience") is sure to lead to confusion.

Some people typedef a pointer-to-struct with a name like NamePtr (ie. with "Ptr" in there) to indicate that it's a pointer, but then I fail to see the advantage - you now have to type three characters (Ptr) instead of one (*), and have not made things more readable (in fact, you've made it less readable).
0
 
LVL 8

Expert Comment

by:ssnkumar
ID: 34968498
The only thing that you achieve from the 2nd typedef is, the usage of pointer (that is * character) will be hidden!
But, I don't see that as a great help. Actually that hinders the code readability and also gives problem while debugging the code.
The problem for debugging might occur in this scenario.
Suppose you have declared a variable:
 name n;
Now while debugging, you don't know that n is a pointer.
If you have 1000 lines of code and there are many such variables, then it will become very difficult to know which is pointer, which is not a pointer etc!
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
LVL 53

Expert Comment

by:Infinity08
ID: 34968850
@ssnkumar : I thought that's what I just said ...
0
 
LVL 8

Expert Comment

by:ssnkumar
ID: 34968969
@Infinity08: The main point that I am trying to stress is about the problem faced during debugging.
May be the point was implicit in your comment about readability.
I am trying to make it more explicit.
0
 
LVL 44

Expert Comment

by:AndyAinscow
ID: 34969006
Ho hum.  To repeat myself with an emphasis put in.  (Maybe I should have done so in the original comment)

As far as I understand it the typedef statement is really for convenience to help make code more readable.
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 34969435
Which is why I emphasised LESS in my post, to show that I disagreed with what you said ;)
0
 
LVL 4

Author Comment

by:James_h1023
ID: 34972309
Many thanks for your comments.

I think I have to agree that it can add to the confusion. I found it in some libraries written by someone else, and I did not know that I was dealing with pointers until I found it typedef'ed as a pointer.

Cheers,
James
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 34972588
>> and I did not know that I was dealing with pointers until I found it typedef'ed as a pointer.

:) Indeed.
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
Examines three attack vectors, specifically, the different types of malware used in malicious attacks, web application attacks, and finally, network based attacks.  Concludes by examining the means of securing and protecting critical systems and inf…
The goal of this video is to provide viewers with basic examples to understand recursion in the C programming language.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use for-loops in the C programming language.
Suggested Courses

722 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question