?
Solved

pointer to an array

Posted on 2004-10-16
5
Medium Priority
?
285 Views
Last Modified: 2010-04-17

Hello Experts,

I need to access the nth element of an array that I have only got a pointer pointing at.

// That is,  I have declared a pointer

            int[] *stackptr;

// then I point it at an array of integers

             stackptr = new int[50];

// now I need to access the nth element of the array

              (*stackptr)[n];

//  What is my syntax problem here?

Thank you,

-TH










0
Comment
Question by:travishaberman
[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
5 Comments
 
LVL 21

Accepted Solution

by:
MogalManic earned 2000 total points
ID: 12330935
This is the classic confustion in C between arrays and pointers.  In C, an array is the same as a pointer.
When you create the array of int:
 stackptr = new int[50];
you are also creating a pointer to an int that is 50 int's long.
 int *stackptr=new int[50];

The declaration
 int[] *stackptr;
is actually an array of int pointers.  Which is the same as
 int[][] stackptr;

To dereference a pointer use the * operator.  To dereference an array use a [] operator.

So to reference the Nth element in an array
  stackptr[n]   = the Nth element in stackptr array
OR
  *(stackptr+5)  Add 5 int's to the address pointed by stackptr and get its value.
Whenever you add a pointer, the C compiler always knows what you are pointing to and adds the size of one unit (an int is 2 bytes so stackptr+1 is offset of 2 bytes in memory)

Your last example:
       (*stackptr)[n];
Dereference the value pointed by stackptr and index the Nth element in the array (assuming stackptr is an array of pointers)

0
 
LVL 11

Expert Comment

by:Jase-Coder
ID: 12331506
TRY

int *arrayptr;

arrayptr = new int[50];

//access the nth element

for(int i=0; i<50; i++)
  cout << *(arrayptr + i );

just imagine the array has had data assigned to it.

if my solution seems the same as mongol then, sorry I never read his
0
 
LVL 3

Expert Comment

by:yasser_helmy
ID: 12332182
*(stackptr+n)
0
 

Author Comment

by:travishaberman
ID: 12333456
I will try these tonight about 8 hours from now and get back to you with the points.  Thanks all,

-TH
0
 

Author Comment

by:travishaberman
ID: 12336193
That was perfect!!!  I think you just saved me about 10 hours of troubles..  Sorry I can only give you the 5 bills.

thanks again,

-TH
0

Featured Post

New benefit for Premium Members - Upgrade now!

Ready to get started with anonymous questions today? It's easy! Learn more.

Question has a verified solution.

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

Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
Whether you’re a college noob or a soon-to-be pro, these tips are sure to help you in your journey to becoming a programming ninja and stand out from the crowd.
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
Starting up a Project

752 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