PPT05-COMP6599-Pointer and Arrays-R0
PPT05-COMP6599-Pointer and Arrays-R0
PPT05-COMP6599-Pointer and Arrays-R0
Programming
Week 5
Session 6
Pointers and Arrays
Sub Topics
Pointers and Arrays
• Pointer
• Array
• Pointer Constant & Pointer Variable
• String
• Program Examples
POINTER
Pointer Definition
• Pointer is a variable that store the address of another variable
• Syntax :
<type> *ptr_name;
• Two operators mostly used in pointer : * (content of) and &
(address of)
• Example:
Initialize an integer pointer into a data variable:
int i, *ptr;
ptr = &i;
To assign a new value to the variable pointed by the pointer:
*ptr = 5; /* means i=5 */
Pointer Concept
Pointer to Pointer
• Pointer to pointer is a variable that saves another address of a
pointer
• Syntax:
<type> **ptr_ptr ;
• Example:
int i, *ptr, **ptr_ptr;
ptr = &i;
ptr_ptr = &ptr;
To assign new value to i:
*ptr = 5; // means i=5 ;
**ptr_ptr = 9; // means i=9; or *ptr=9;
Pointer to Pointer Concept
ARRAY
Array Definition
• Data saved in a certain structure to be accessed as a
group or individually. Some variables saved using the
same name distinguish by their index.
• Array characteristics:
– Homogenous
All elements have similar data type
– Random Access
Each element can be reached individually, does not have to be
sequential
Array Definition
• Syntax:
type array_value [value_dim];
• Example :
int A[10];
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
Array Initialization
• Array can be initialized explicitly without dimensional value
declaration
– Example:
int B[ ]={1, 2, -4, 8};
Array B has 4 elements
– Example:
int B[8]={1, 2, -4, 8};
Array Initialization
• Example: int B[4] = { 1, 2, -4, 8, 9 }; //error
error in result; smaller dimensional value
Error, why ?
int B[5];
B[5]={0,0,0,0,0};
Accessing Arrays
• Two analogous ways of accessing an element i=3;
*(A+3) or A[3]
27 15
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
One Dimensional Array
int SIZE = 5;
void main() {
int i, j;
int n[SIZE] = {15, 9, 1, 7, 5};
for( i=0 ; i<= SIZE ; i++) {
printf("%5d ", n[i]);
for ( j=1; j<=n[i] ; j++) printf("%c","*");
printf("\n");
}
}
Two Dimensional Array
• Syntax 2D Array:
type name_array[row][col];
• Example:
int a[3][4];
Column 0 Column 1 Column 2 Column 3
Row 0 a[ 0 ][ 0 ] a[ 0 ][ 1 ] a[ 0 ][ 2 ] a[ 0 ][ 3 ]
Row 1 a[ 1 ][ 0 ] a[ 1 ][ 1 ] a[ 1 ][ 2 ] a[ 1 ][ 3 ]
Row 2
a[ 2 ][ 0 ] a[ 2 ][ 1 ] a[ 2 ][ 2 ] a[ 2 ][ 3 ]
Column subscript
Array name
Row subscript
Two Dimensional Array
• Initialization:
using rmo (row major order)
• Example:
• int b[2][2] = {1, 2, 3, 4 }; 1 2
• int b[2][2] = { { 1, 2 }, { 3, 4 } }; 3 4
1 0
• int b[2][2] = { { 1 }, { 3, 4 } };
3 4
• Example:
int x[3][2][4] = {{{1,2,3,4}, {5,6,7,8}},
{{11,12,13,14}, {15,16,17,18}},
{{21,22,23,24}, {25,26,27,28}}
};
void main() {
int x[4][3][5] = {{{1, 2, 3}, {0, 4, 3, 4}, {1, 2}},
{{9, 7, 5}, {5, 7, 2}, {9}},
{{3, 3, 5}, {2, 8, 9, 9}, {1, 2, 1}},
{{0}, {1}, {0, 1, 9}}
};
printf(“%5d”, x[2][1][3]);
}
Array of Pointer
• An array filled with pointer/s
• Syntax :
type *array_name [value_dim];
• Example:
int i;
int *ptr[4];
int x=1, y=2, z=3, w=5;
ptr[0]=&x, ptr[1]=&y; ptr[2]=&z; ptr[3]=&w;
for(i=0;i<4;i++) printf("%d ",*ptr[i]);
Output : 1 2 3 5
Array of Character
• Array filled with character/s
• Syntax:
char array_name[value_dim];
• Example:
char name[40];
char ss[20]={‘B’,’I’,’N’,’U’,’S’}; //20 elements
char ss[ ]= {‘B’,’I’,’N’,’U’,’S’}; // 5 elements
POINTER CONSTANT & POINTER
VARIABLE
Pointer Constant & Pointer
Variable
• Pointer variable is a pointer that can be assigned with new
value at run-time.
• Pointer constant is a pointer that can not be assigned with new
value at run-time
• Array is Pointer Constant to its first element of the array. Array
can be filled with pointer variable.
• Example:
– int x=10, y=20;
– int *ptr; //ptr is pointer variable
– ptr = &x;
– ptr = &y;
Pointer Constant & Pointer
Variable Example 1
• Example:
– int x=10, y=20;
– int B[4]; // B is an Array pointer constant
– int *ptr; // ptr is a pointer variable
– ptr = &x; // ok
– ptr = B; // ok
– ptr++; // ok
– B = ptr; // error
– B++; // error
– B = &y; // error
• Example:
int Arr1[10];
Arr1[10] = {1, 2, 3, 4, 5}; // error
Arr1 = {1, 2, 3, 4, 5}; // error
Arr1[10] = 12; // error max 9
Arr1[0] = 23; // ok