0% found this document useful (0 votes)
141 views38 pages

PPT05-COMP6599-Pointer and Arrays-R0

This document provides an overview of pointers and arrays in C programming. It defines pointers as variables that store the address of another variable. It discusses pointer operators like * and &. It also defines arrays as a structured way to store data that can be accessed individually or as a group. The document covers array initialization, accessing arrays using indexes or pointers, and multi-dimensional arrays. It distinguishes between pointer variables that can change and pointer constants. Finally, it discusses strings as arrays of characters terminated by a null character.

Uploaded by

Asep Tri Priyono
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)
141 views38 pages

PPT05-COMP6599-Pointer and Arrays-R0

This document provides an overview of pointers and arrays in C programming. It defines pointers as variables that store the address of another variable. It discusses pointer operators like * and &. It also defines arrays as a structured way to store data that can be accessed individually or as a group. The document covers array initialization, accessing arrays using indexes or pointers, and multi-dimensional arrays. It distinguishes between pointer variables that can change and pointer constants. Finally, it discusses strings as arrays of characters terminated by a null character.

Uploaded by

Asep Tri Priyono
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/ 38

COMP6599 – Algorithm and

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];

• The definition consists of 4 components:


– Type specified
– Identifier (name of the array)
– Operator index ([ ])
– Dimensional value inside operator [ ]
Array Definition
• An illustration of array 1Dimensional
• 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
• 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

• Example array initialization after definition:


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

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]

• A is equivalent with &A[0] or a constant pointer to the first


element of particular array

• To show A[3] on the monitor screen:


printf(“%d”,A[3]) or
printf(“%d\n”,*(A+3));
Accessing Arrays
• Accessing array using a pointer
int arr[10];
int *ptr_arr;
ptr_arr = arr; //or ptr_arr = &arr[0];

• 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;
Assigning Values in Array

• Assigning value to an element


• 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]

• 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]
One Dimensional Array

• C compiler does not limit number of dimensional which


can be created. Our PC memory does.
• 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

• 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

• 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

• Example Array 2D:


Three Dimensional Array
• Syntax 3D Array :
type name_array[row][col][depth];

• 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

• ptr = B; analogous with ptr = &B[0]; B is a pointer constant


pointing to the first element of an array.
Pointer Constant & Pointer
Variable Example 2
• Pointer constant can only be initialized at definition time

• 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


STRING
String
• String is an array of character that ended with null character
( ‘\0’ or in ASCII = 0)

• String constant or string literal is some characters written


between double quote
– Example: ”Welcome to Binus”

• 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
• A Constant String can be linked at compile-time:
”Hello,” ” world”
Similar to:
”Hello, world”

• Example string initialization:


char s[ ] = ”BiNus”;
Similar to :
char s[ ] = {’B’,’i’,’N’,’u’,’s’,’\0’};

• String as a data type does not known in C


Char vs String

• Character in c written between single quote. Each uses one


byte of computer memory
• Example:
char ch=’A’;
char ch=65; //Ascii Similar
char ch=0x41; //Ascii

• String written in between double quote.


String Manipulation
• 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 Example :
String Manipulation 1
• Example: (String Manipulation)
Program Example :
String Manipulation 2
• Example: (Copy String)
SUMMARY
Summary
• Pointer is a variable that store the address of another variable
• Pointer to pointer is a variable that saves another address of a
pointer
• 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 as an array
• String is an array of character that ended with null character
References
• Paul J. Dietel,Harvey M. Deitel,. 2010. C : how to program.
PEAPH. New Jersey. ISBN:978-0-13-705966-9 Chapter 6 & 7
• C Programming – Pointers: http://www.exforsys.com/tutorials/c-
language/c-pointers.html
• Storing Similar Data Items: http://aelinik.free.fr/c/ch12.htm
Thank You

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy