Page 1 of 1

## C POINTER TUTORIAL PART 4 RETURNING AN ARRAY FROM A FUNCTION Rate Topic: //<![CDATA[ rating = new ipb.rating( 'topic_rate_', { url: 'http://www.dreamincode.net/forums/index.php?app=forums&module=ajax&section=topics&do=rateTopic&t=179683&amp;s=857cd783e9d0212c8bf365312bc19d84&md5check=' + ipb.vars['secure_hash'], cur_rating: 0, rated: 0, allow_rate: 0, multi_rate: 1, show_rate_text: true } ); //]]>

### #1 Elcric

• D.I.C Regular

Reputation: 102
• Posts: 453
• Joined: 02-May 09

Posted 30 June 2010 - 10:22 AM

C POINTER TUTORIAL

PART 4

CONTENTS
• I. INTRODUCTION
• II. RETURNING AN ARRAY FROM A FUNCTION
• III. EXAMPLE PROGRAM
• IV. REFERENCES

I. INTRODUCTION

Hello; nice to meet you. Welcome to the “C Pointer Tutorial Part 4.”

II. RETURNING AN ARRAY FROM A FUNCTION

Extensive comments are included in the sample code snippets in order to answer basic questions regarding the three ways to return a two dimensional array from a function as shown below:

A. Array To A Pointer

The array is returned from the function definition as a pointer.

1. Prototype:

```int *array2Ptr();  /*  Declaration of function returning an int pointer  */

```

2. Calling Function:

```one = array2Ptr();

```

3. Function Definition:

```/*
Array To A Pointer
*/
int *array2Ptr()
{
static int arr[][2] = { { 00, 01 }, { 10, 11 }, { 20, 21 }, { 30, 31 } };

/*
Column  	    Column
Zero		    One
Row Zero	00		        01
Row One		10		        11
Row Two		20		        21
Row Three	30		        31
*/

return *arr;  /*  Returns array arr[][2] as pointer *arr.  */
}

```

B. Array To A One Dimensional Pointer Array

The array is returned from the function definition as a one dimensional pointer array.

1. Prototype:

```int ( *arrayToOneDimPtrArray() )[2];  /*  Declaration of one dimensional int pointer function array.  */

```

2. Calling Function:

```two = arrayToOneDimPtrArray();

```

3. Function Definition:

```/*
Array To A One Dimensional Pointer Array
*/
int ( *arrayToOneDimPtrArray() )[2]
{
static int arr[][2] = { { 00, 01 }, { 10, 11 }, { 20, 21 }, { 30, 31 } };

return arr;  /*  Returns array arr[][2] as one dimensional pointer array arr.  */
}

```

C. Array To A Two Dimensional Pointer Array

The array is returned from the function definition as a two dimensional pointer array.

1. Prototype:

```int ( *arrayToTwoDimPtrArray() )[4][2];  /*  Declaration of int two dimensional pointer function array.  */

```

2. Calling Function:

```three = arrayToTwoDimPtrArray();

```

3. Function Definition:

```/*
Array To A Two Dimensional Pointer Array
*/
int ( *arrayToTwoDimPtrArray() )[4][2]
{
static int arr[][2] = { { 00, 01 }, { 10, 11 }, { 20, 21 }, { 30, 31 } };

return ( int(*)[4][2] )arr;  /*  Returns array arr[][2] as two dimensional pointer array ( int(*)[4][2] )arr.  */

}

```

III. EXAMPLE PROGRAM

```/* ************************************
C POINTER TUTORIAL PART 4
RETURNING AN ARRAY FROM A FUNCTION
************************************ */
#include<math.h>      /*  Math header file.          */
#include<stdio.h>     /*  Standard I/O header file.  */

#define rows 4

int main( int argc, char* argv[] )
{
/*
DECLARATIONS
*/

int *one;          /*  Declaration of int pointer one.  */
int i;             /*  Declaration of int variable i.  */

int ( *two )[2];   /*  Declaration of one dimensional int pointer array two.  */
int *ptr;          /*  Declaration of int pointer ptr.  */

int ( *three )[4][2];  /*  Declaration of int two dimensional pointer array three.  */

/*
FUNCTION PROTOTYPES
*/
int *array2Ptr();  /*  Declaration of function returning an int pointer  */
int ( *arrayToOneDimPtrArray() )[2];  /*  Declaration of one dimensional int pointer function array.  */
int ( *arrayToTwoDimPtrArray() )[4][2];  /*  Declaration of int two dimensional pointer function array.  */

printf("\n\n      C POINTER TUTORIAL  PART 4\n\n");
printf("  RETURNING AN ARRAY FROM A FUNCTION\n\n\n");

one = array2Ptr();
printf("  Returning a two dimensional array \n");
printf("  from the array2Ptr() function\n");
printf("  to a pointer.\n\n");
for( i=0; i<rows; i++ )
{
printf( "  %5d %5d \n", *(one+i*2), *(one+i*2+1) );
}

two = arrayToOneDimPtrArray();
printf("\n\n  Returning a two dimensional array\n");
printf("  from the arrayToOneDimPtrArray() function\n");
printf("  to a one dimension pointer arrray.\n\n");
for( i=0; i<rows; i++ )
{
ptr=(int*)two;

printf( "  %5d %5d \n", *ptr, *(ptr+1) );
two++;
}

three = arrayToTwoDimPtrArray();
printf("\n\n  Returning a two dimensional array\n");
printf("  from the arrayToTwoDimPtrArray() function\n");
printf("  to a two dimension pointer arrray.\n\n");
for( i=0; i<rows; i++ )
{
printf( "  %5d %5d \n", (*three)[i][0], (*three)[i][1] );
}

printf( "\n\n\n  Please press any key to EXIT." );
char z;
z = getchar();

return 0;
}

/*
FUNCTION DEFINITIONS
*/

/*
Array To A Pointer
*/
int *array2Ptr()
{
static int arr[][2] = { { 00, 01 }, { 10, 11 }, { 20, 21 }, { 30, 31 } };

/*
Column  Column
Zero	One
Row Zero	00		01
Row One		10		11
Row Two		20		21
Row Three	30		31
*/

return *arr;  /*  Returns array arr[][2] as pointer *arr.  */
}

/*
Array To A One Dimensional Pointer Array
*/
int ( *arrayToOneDimPtrArray() )[2]
{
static int arr[][2] = { { 00, 01 }, { 10, 11 }, { 20, 21 }, { 30, 31 } };

return arr;  /*  Returns array arr[][2] as one dimensional pointer array arr.  */
}

/*
Array To A Two Dimensional Pointer Array
*/
int ( *arrayToTwoDimPtrArray() )[4][2]
{
static int arr[][2] = { { 00, 01 }, { 10, 11 }, { 20, 21 }, { 30, 31 } };

return ( int(*)[4][2] )arr;  /*  Returns array arr[][2] as two dimensional pointer array ( int(*)[4][2] )arr.  */

}

```

IV. REFERENCES

The C Programming Language by Brian Kernighan and Dennis Ritchie (Englewood Cliffs, N.J.: Prentice-Hall, 1978).

C++: The Complete Reference, Fourth Edition by Herbert Schildt (Berkeley, California: McGraw-Hill/Osborne, 2003).

Is This A Good Question/Topic? 1

Page 1 of 1

 .related ul { list-style-type: circle; font-size: 12px; font-weight: bold; } .related li { margin-bottom: 5px; background-position: left 7px !important; margin-left: -35px; } .related h2 { font-size: 18px; font-weight: bold; } .related a { color: blue; }