Solved

array and pointer initilization

Posted on 2003-10-22
5
298 Views
Last Modified: 2010-04-15


 int *pt1,*pt2 ;
 
 pt1=&vi2[0][0] ;
 pt2=&vi2[2][1] ;

 how can i rewrite  right side (rvalue) i n a shorter pt1=&vi2[0][0] (more compact way).
0
Comment
Question by:xinex
  • 2
  • 2
5 Comments
 
LVL 45

Expert Comment

by:sunnycoder
ID: 9598024
pt1=vi2[0] ;

pt2=&vi2[2][1]; //this is as short as it gets
0
 
LVL 5

Expert Comment

by:snehanshu
ID: 9598084
isn't
pt1=&vi2[0][0] ;
equal to
pt1 = v2;
?
...S
0
 
LVL 45

Expert Comment

by:sunnycoder
ID: 9598147
vi2 would be an int **
pt1 is an int pointer
the value may be same or different depending on how array was allocated

consider this

int ** vi2;
vi2 = (int **) malloc (sizeof(int *) * 10 );

vi2[0] =  (int *) malloc (sizeof(int ) * 10 );

now vi2[0] holds the address of [0][0] (the int we want) while vi2 holds the address of the array of pointers (not the int)

on the other hand, if the allocation was static, the addresses will be the same
0
 
LVL 5

Expert Comment

by:snehanshu
ID: 9598692
Right sunnycoder,
Then how about
pt1 = *vi2
?
...S
0
 
LVL 5

Accepted Solution

by:
dennis_george earned 50 total points
ID: 9604493
hi...

an array
(int arr[MAX1][MAX2] ;)

 can be represented in following forms....

Array[x][y] can be also represented as

   *(*(Array + x) + y)  --->  *( *(x + Array) + y )   ---> x[Array][y]

since we know for addition a + b = b + a

and if you want to represent &Array[x][y] ;

   (*(Array + x) + y)

So if you want to represent
pt1=&vi2[0][0] ;
 pt2=&vi2[2][1] ;

you can do by

pt1 = (*(vi2 + 0) + 0 );     --->       pt1 = *(vi2  + 0) ;        ---> pt1 = *vi2;
pt2 = (*(vi2 + 2) + 1 );


Dennis
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

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

This tutorial is posted by Aaron Wojnowski, administrator at SDKExpert.net.  To view more iPhone tutorials, visit www.sdkexpert.net. This is a very simple tutorial on finding the user's current location easily. In this tutorial, you will learn ho…
Windows programmers of the C/C++ variety, how many of you realise that since Window 9x Microsoft has been lying to you about what constitutes Unicode (http://en.wikipedia.org/wiki/Unicode)? They will have you believe that Unicode requires you to use…
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 while-loops in the C programming language.

803 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