0% found this document useful (0 votes)
39 views35 pages

PPT05-Pointers and Array

The document discusses pointers and arrays in C programming. It defines pointers, pointer variables and constants, and how to declare and access single, multi-dimensional and character arrays. Examples are provided to demonstrate array initialization and manipulation using pointers.

Uploaded by

hawarieslab
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
39 views35 pages

PPT05-Pointers and Array

The document discusses pointers and arrays in C programming. It defines pointers, pointer variables and constants, and how to declare and access single, multi-dimensional and character arrays. Examples are provided to demonstrate array initialization and manipulation using pointers.

Uploaded by

hawarieslab
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 35

Course : Algorithm and Programming

Effective Period : 2022

TOPIC 05

POINTERS AND ARRAY


LEARNING OUTCOME

At the end of this session, the student will be able to:


• LO 2: Analyze a program using C language for problem-solving
OUTLINE

• Pointer
• Pointer Constant & Pointer Variable
• Array
• String Manipulation
POINTER DEFINITION

o Pointer is a variable that store the address of another variable


o Syntax :
<type> *ptr_name;
o Two operators mostly used in pointer : * (content of) and & (address of)
o 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

o Pointer to pointer is a variable that saves another address of a pointer


o Syntax:
<type> **ptr_ptr ;
o 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
POINTER CONSTANT & POINTER
VARIABLE
o Pointer variable is a pointer that can be assigned with new value at run-time.
o Pointer constant is a pointer that can not be assigned with new value at run-time
o Array is Pointer Constant to its first element of the array. Array can be filled with pointer
variable.
o Example:
• int x=10, y=20;
• int *ptr; //ptr is pointer variable
• ptr = &x;
• ptr = &y;
POINTER CONSTANT & POINTER
VARIABLE
o 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

o ptr = B; analogous with ptr = &B[0]; B is a pointer constant pointing to the first element of an
array.
POINTER CONSTANT & POINTER
VARIABLE
o Pointer constant can only be initialized at definition time

o 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

int Arr2[10] = {1, 2, 3, 4, 5}; //ok


ARRAY DEFINITION

o 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.

o 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

o Syntax:
type array_value [value_dim];

o Example :
int A[10];

o The definition consists of 4 components:


• Type specified
• Identifier (name of the array)
• Operator index ([ ])
• Dimensional value inside operator [ ]
ARRAY DEFINITION

o An illustration of array 1D
o Elements of an array indexed starting from 0

A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
ARRAY INITIALIZATION

o 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

o Example array initialization after definition:


int A[5];
(for i=0; i<5;i++) A[i]=0;

int B[5];
Error, why ?
B[5]={0,0,0,0,0};
ACCESSING ARRAYS

o Two analogous ways of accessing an element i=2;


*(A+2) or A[2]
o A is equivalent with &A[0] or a constant pointer to the first element of particular array
o To show A[2] on the monitor screen:
printf(“%d”,A[2]) or
printf(“%d\n”,*(A+2));
ASSIGNING VALUES

o Assigning value to an element


o Example : A[6] = 15; A[3] = 27;

27 15
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]

o Statement A[2] = A[3] - A[6], resulting:

12 27 15
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
ACCESSING ARRAYS

o Accessing array using a pointer


int arr[10];
int *ptr_arr;
ptr_arr = arr; //or ptr_arr = &arr[0];

o To access certain element can be done using:


ptr_arr[i];
arr[i];
*(ptr_arr + i);
*(arr + i);
ptr_arr = ptr_arr + i; *ptr_arr;
ARRAY: PROGRAM EXAMPLES

o Example:
#include <stdio.h>
void main()
{
int i;
int list_int[10];
for (i=0; i<10; i++){
list_int[i] = i + 1;
printf( "list_int[%d] init with %d.\n", i,
list_int[i]);
}
}
ONE DIMENSIONAL ARRAY

o C compiler does not limit number of dimensional which can be created. Our PC memory does.
o Example Array 1D:
#include<stdio.h>

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

o Syntax 2D Array:
type name_array[row][col];
o 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

o Initialization:
using rmo (row major order)
o 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

 int x[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};


 int x[3][4] = { {1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
TWO DIMENSIONAL ARRAY

o Example Array 2D:

/* Printing out array 2-D */


#include <stdio.h>
void main() {
int two_dim[3][5] = {1, 2, 3, 4, 5,
10, 20, 30, 40, 50,
100, 200, 300, 400,
500};
int i, j;
for (i=0; i<3; i++){
for (j=0; j<5; j++) printf("%6d",
two_dim[i][j]);
printf("\n");
}
}Output:
12345
10 20 30 40 50
100 200 300 400 500
THREE DIMENSIONAL ARRAY

o Syntax 3D Array :
type name_array[row][col][depth];

o 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

o An array filled with pointer/s


o Syntax :
type *array_name [value_dim];
o 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

o Array filled with character/s

o Syntax:
char array_name[value_dim];

o Example:
char name[40];
char ss[20]={‘B’,’I’,’N’,’U’,’S’}; //20 elements
char ss[ ]= {‘B’,’I’,’N’,’U’,’S’}; // 5 elements
STRING

o String is an array of character that ended with null character ( ‘\0’ or in ASCII = 0)
o String constant or string literal is some characters written between double quote
• Example: ”Welcome to Binus”

o String constant type is pointer constant, thus can be assigned to an array of character :
• Example :
char name[40] = ”Amir”; //ok
name = ”Amir”; // error name is a constant pointer
Name[40]= “Amir”; //error
STRING

o A Constant String can be linked at compile-time:


”Hello,” ” world”
Similar to:
”Hello, world”
o Example string initialization:
char s[ ] = ”BiNus”;
Similar to :
char s[ ] = {’B’,’i’,’N’,’u’,’s’,’\0’};
o String as a data type does not known in C
CHAR VS STRING

o Character in c written between single quote. Each uses one byte of computer memory
o Example:
char ch=’A’;
char ch=65; //Ascii Similar
char ch=0x41; //Ascii

o String written in between double quote.


STRING MANIPULATION

o In Standard Library Function (header file string.h) provides functions to manipulate string:
• strlen()
Return a value of string length; excluded null char
• strcpy(s1,s2)
Copy s2 to s1
• strncpy(s1,s2,n)
Copy first n characters of s2 to s1
• strcat(s1,s2)
Adding string s2 to the end of string s1
• strncat(s1,s2,n)
Adding n characters of string s2 to the end of string s1
• strcmp(s1,s2)
Comparing the value of string s1 and s2, if similar returning 0
• etc.
PROGRAM EXAMPLES

o Example: (String Manipulation)


char s1[ ] = “abcdef”;
char s2[ ] = “xyz”;

strlen(“nana”); // 4
strcmp(“nana”, “nana”) // result 0
strcpy(s1,s2); // s1 = “xyz”, s2 = “xyz”
strncpy(s1,s2,2); // s1 = “xycdef”, s2 = “xyz”
strncpy(s1,s2,4); // if n>=strlen(s2) similar with
// strcpy() s1 = “xyz”
strcat(s1,s2); // s1=“abcdefxyz”, s2=“xyz”
strncat(s1,s2,2); // s1=“abcdefxy”, s2=“xyz”

s1 = “Happy”
s2 = “New Year”

strcat( s1, s2 ) // s1= “Happy New Year”


strncat( s3, s1, 6 ) // s1= “Happy”
strcat( s3, s1 ) // s1= “Happy Happy New Year”
PROGRAM EXAMPLES

o Example: (Copy String)


/* Copy string */
#include <stdio.h>
#include <string.h>
void main() {
char str1[] = "Copy a string.";
char str2[15];
char str3[15];
int i;

strcpy(str2, str1); // with strcpy()

for (i=0; str1[i]; i++) // without strcpy()


str3[i] = str1[i];
str3[i] = `\0';

/* print out str2 and str3 */


printf("The content of str2: %s\n", str2);
printf("The content of str3: %s\n", str3);
}
SUMMARY

o Pointer is a variable that stores the address of another variable


o Pointer to pointer is a variable that saves another address of a pointer
o 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 which called an array
o String is an array of characters that ended with a null character
ThankYOU...
REFERENCES

o Paul J. Deitel & Harvey. Deitel. (2022). C how to program. 09. Pearson Education. Hoboken.
ISBN:978-0-13-739839-3. Chapter 7 & 8
o C Programming – Pointers: http://www.exforsys.com/tutorials/c-language/c-pointers.html
o https://www.cs.bu.edu/teaching/cpp/string/array-vs-ptr/
o http://www.programiz.com/c-programming/library-function/string.h
o http://www.tutorialspoint.com/c_standard_library/string_h.htm
o Storing Similar Data Items: http://aelinik.free.fr/c/ch12.htm

You might also like