1. main( )
{
int a[ ] = { 7, 9, 16, -2, 8 } ;
a[0] a[1] a[2] a[3] a[4]
7 9 16 -2 8
102 104 106 108 110
int i ;
printf ( ”%u %u %u”, &a[ 0 ], &a[ 1 ], &a[ 2 ] ) ;
printf ( ”%u %u %u”, a, a + 1, a + 2 ) ;
printf ( ”%d %d %d”, *a, *( a +1 ), *( a + 2 ) ) ;
for ( i = 0 ; i <= 4 ; i ++ )
printf ( ”%d”, *( a + i ) ) ;
for ( i = 0 ; i <= 4 ; i ++ )
printf ( ”%d”, a[ i ] ) ;
}
102 104 106
102 104 106
7 9 16
Another Form...
Subscript
Notation
Pointer
Notation
2. More Forms...
main( )
{
int a[ ] = { 7, 9, 16, -2, 8 } ;
int i ;
for ( i = 0 ; i <= 4 ; i ++ )
printf ( ”%d”, a[ i ] ) ;
for ( i = 0 ; i <= 4 ; i ++ )
printf ( ”%d”, *( a + i ) ) ;
for ( i = 0 ; i <= 4 ; i ++ )
printf ( ”%d”, *( i + a ) ) ;
for ( i = 0 ; i <= 4 ; i ++ )
printf ( ”%d”, i[ a ] ) ;
}
a[ i ] i[ a ]
*( a + i ) *( i + a )
3. Flexible Arrays
int a[ n ] ;
scanf ( ”%d”, n ) ;
Size of an array must always be mentioned
as a positive, non-zero, integer constant
5. Legal Pointer Arithmetic
Pointer + number
Pointer - number
Pointer - Pointer
Pointer
Pointer
Number
6. Access Using Pointers
main( )
{
int a[ ] = { 7, 9, 16, -2, 8 } ;
int *p ; int i ;
p = a ; /* same as a[ 0 ] */
printf ( ”%d”, *p ) ; p++ ; 7
printf ( ”%d”, p ) ; 104
printf ( ”%d”, *p ) ;
9
for ( i = 0 ; i = 4 ; i++ )
printf ( ”%d”, *p ) ;
p++ ;
{
}
}
a[0] a[1] a[2] a[3] a[4]
7 9 16 -2 8
102 104 106 108 110
p p
102
104
p++
* ++ p++ ;
p
Ist
* ++p ;
IInd Ist
IInd
++ *p ;
p = a ;
7. main( )
{
[ ] For Notation...
int a[ ] = { 7, 9, 16, -2, 8 } ;
int *p ; int i ;
p = a ;
for ( i = 0 ; i = 4 ; i ++ )
printf ( ”%d %d %d %d”,
}
a[0] a[1] a[2] a[3] a[4]
7 9 16 -2 8
102 104 106 108 110
*( p + i ), *( i + p ),
p[ i ], i[ p ] ) ;
int a[5] ; int 5[a] ;
printf ( ”%d”, a[2] ) ; printf ( ”%d”, 2[a] ) ;
int a[5] ; int 5[a] ;
printf ( ”%d”, a[2] ) ; printf ( ”%d”, 2[a] ) ;
8. Dancing Dolls Revisited
main( )
{
char far *s = 0xB8000000 ; int i ;
for ( i = 0 ; i = 3999 ; i += 2 )
{
if ( *( s + i ) = ’A’ *( s + i ) = ’Z’ )
}
}
ss[[ ii ]]
* ( i + s )
i[ s ]
a[i]
- One is pointer
or array
- Other is int
9. main( )
{
Changing Array Address
int a[ ] = { 7, 9, 16, -2, 8 } ;
int *p ; int i ;
p = a ;
for ( i = 0 ; i = 4 ; i ++ )
printf ( ”%d”, *p ) ;
p++ ;
{
}
}
for ( i = 0 ; i = 4 ; i ++ )
printf ( ”%d”, *a ) ;
a++ ;
{
} Error
a[0] a[1] a[2] a[3] a[4]
7 9 16 -2 8
102 104 106 108 110
a-- ;
a = a + 2 ;
a = a - 2 ;
a += 2 ;
a -= 2 ;
a-- ;
a = a + 2 ;
a = a - 2 ;
a += 2 ;
a -= 2 ;
10. Passing Array Elements
main( )
{
int a[ ] = { 7, 9, 16, -2, 8 } ;
int i ;
display ( a[ 0 ], a[ 1 ], a[ 2 ], a[ 3 ], a[ 4 ] ) ;
for ( i = 0 ; i = 4 ; i++ )
display1 ( a[ i ] ) ;
}
display ( int i, int j, int k, int l, int m
)
{
printf ( ”%d %d %d %d %d”, i, j, k, l, m ) ;
}
display1 ( int n
)
{
printf ( ”%d”, n ) ;
}
Which
is good?
Which
is good?
11. Passing Entire Array
main( )
{
int a[ ] = { 7, 9, 16, -2, 8 } ;
display2 ( a ) ;
display3 ( a ) ;
, sizeof ( a ) / 2 - 1
} display2 ( i n t * p )
int i ;
for ( i = 0 ; i = 4 ; i ++ )
printf ( ”%d”, ) ;
}
*( p + i )
{
display3 ( i n t * p , int n
)
{
i = n
int i ;
for ( i = 0 ; i = 4 ; i ++ )
} printf ( ”%d”, * ( p + i ) ) ;
a[0] a[1] a[2] a[3] a[4]
7 9 16 -2 8
102 104 106 108 110
qqssoorrtt (( aa,, 55,, ,, ,, )) ;;
12. Remember...
Any time an entire array is to be passed
to function, it is necessary to pass
(1) Base address of array
(2) No. of elements present in the array
13. main( ) Two Dimensional Array
{ int a[ ][ ] = {
{ 2, 6, 1, 8, 4 }
{ 1, 2, 5, 6, 8 }
{ 7, 9, 8, 7, 21 }
{ 4, 5, 6, 8, 10 }
} ;
optional
int i, j ;
printf ( ”%d”, a[ ][ ] ) ;
2 4
printf ( ”%d %d”, sizeof ( a ), a ) ;
for ( i = 0 ; i = 3 ; i++ )
{
for ( j = 0 ; j = 4 ; j++ )
printf ( ”%d”, a [ i ][ j ] ) ;
} printf ( ”n” ) ;
}
5
optional
int b[ ][1][2][3]
compulsory
21
40 4080
optional
,
,
,
compulsory
compulsory
EExxcceeppttiioonn