Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Accessing members of an array of structs

Posted on 1998-12-17
9
Medium Priority
?
364 Views
Last Modified: 2013-12-14
I am fairly new to C and I am using a fuction in a DLL whose documentation is:
--------------------
typedef struct
{
int i;
} X_Y

// prototype
bool TheFunc(X_Y **ppUsers;
-------------------
// In arguments none.
// Out returns ppUsers a pointer to the Users array.
-------------------
Now when I debug this with variables watch it returns an pointer to an array of structs.

Question how do I access members of individual structs in the array. Eg if there was 5 structs in the array how do get "int i" from the second struct??

Code example please !!
0
Comment
Question by:cosmicmike
[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
  • 7
  • 2
9 Comments
 
LVL 10

Accepted Solution

by:
RONSLOW earned 200 total points
ID: 1255274
like this...
0
 
LVL 10

Expert Comment

by:RONSLOW
ID: 1255275
something like this

X_Y* pUsers;

pUsers = NULL;
if (TheFunc(&pUsers)) {
  /* guess TheFunc returns true if it allocated an array */
  if (pUsers) { /* check anyway */
    int j;
    int n;
    n = 10; /* how do you know how many in the array? */
    for (j = 0; j < n; j++) {
      printf("%d\n",pUsers[j].i);
    }
    /* you may have to free the array afterwards */
  }
}

0
 

Author Comment

by:cosmicmike
ID: 1255276
RONSLOW
I left an important bit out of the prototype

// prototype
bool TheFunc(&iCount, X_Y **ppUsers;

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 10

Expert Comment

by:RONSLOW
ID: 1255277
that would probably change it to..

X_Y* pUsers;
int n;

pUsers = NULL;
n = 0;
if (TheFunc(&pUsers)) {
  /* guess TheFunc returns true if it allocated an array */
  if (pUsers && n != 0) { /* check anyway */
    int j;
    for (j = 0; j < n; j++) {
      printf("%d\n",pUsers[j].i);
    }
    /* you may have to free the array afterwards */
  }
}

0
 

Author Comment

by:cosmicmike
ID: 1255278
RONSLOW

I would have thought that to access a member from a pointer
would be pUsers->i ?????????
0
 
LVL 10

Expert Comment

by:RONSLOW
ID: 1255279
Not when it is an array.

-> is to derefence a pointer to a single item
[j] is to derefence a pointer to one element of an array of items.

0
 
LVL 10

Expert Comment

by:RONSLOW
ID: 1255280
Not when it is an array.

-> is to derefence a pointer to a single item
[j] is to derefence a pointer to one element of an array of items.

0
 
LVL 10

Expert Comment

by:RONSLOW
ID: 1255281
Not when it is an array.

-> is to derefence a pointer to a single item
[j] is to derefence a pointer to one element of an array of items.

0
 
LVL 10

Expert Comment

by:RONSLOW
ID: 1255282
oops .. don't know how that happened. It looks like I'm saying everything three times everything three times everything three times :-)

0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

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

Update (December 2011): Since this article was published, the things have changed for good for Android native developers. The Sequoyah Project (http://www.eclipse.org/sequoyah/) automates most of the tasks discussed in this article. You can even fin…
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…
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use while-loops in the C programming language.
The viewer will learn how to use NetBeans IDE 8.0 for Windows to connect to a MySQL database. Open Services Panel: Create a new connection using New Connection Wizard: Create a test database called eetutorial: Create a new test tabel called ee…

609 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