SlideShare a Scribd company logo
CProgramming Language
&
Data Structure
Prepared by: Mo’meN M. Ali
E-mail: momen.1993@live.com
References
• www.stackoverflow.com
• C Primer Plus 6th Edition
• Let Us C 5th Edition
• The C Programming Language 2nd Edition
• C Modern Approach 2nd Edition
• Data Structures and Algorithm Analysis in C 2nd Edition
Mo’meN M. Ali
C Programming Language
Review Programs are uploaded to this Git repo
https://github.com/Mo2meN-
Ali/x86/tree/master/Programming%20Course/1-
Arrays%20%26%20Pointers
C Programming Language
Mo’meN M. Ali
Topics
• Arrays & Pointers.
• Character String & String Functions.
• Storage Classes, Linkage & Memory Management.
• File Input/Output.
• Structures & Other Data Formats.
• Bit Fiddling.
• The C Preprocessor & The C Library.
• Algorithm Analysis & ADT.
• Stacks & Queues.
• Trees.
C Programming Language
Mo’meN M. Ali
Today You Will Learn About:
• Keyword: static.
• Operators: & * (unary).
• How to create and initialize arrays.
• Pointers.
• Writing functions that process arrays.
• Two-dimensional arrays.
C Programming Language
Mo’meN M. Ali
Arrays
• An array is composed of a series of elements of one data type.
• An array declaration tells the compiler how many elements the array
contains and what the type is for these elements.
• To access elements in an array, you identify an individual element by using
its subscript number, also called its index,The numbering starts with 0.
C Programming Language
Mo’meN M. Ali
/* some array declarations */
int main(void)
{
float candy[365]; /* array of 365 floats */
char code[12]; /* array of 12 chars */
int states[50]; /* array of 50 ints */
}
C Programming Language
Mo’meN M. Ali
#include <stdio.h>
#define MONTHS 12
int main(void)
{
int days[MONTHS]= {31,28,31,30,31,30,31,31,30,31,30,31};
int index;
for (index = 0; index < MONTHS; index++)
printf("Month %d has %2d days.n", index +1, days[index]);
return 0;
}
Output
Month 1 has 31 days.
Month 2 has 28 days.
Month 3 has 31 days.
Month 4 has 30 days.
Month 5 has 31 days.
Month 6 has 30 days.
Month 7 has 31 days.
Month 8 has 31 days.
Month 9 has 30 days.
Month 10 has 31 days.
Month 11 has 30 days.
Month 12 has 31 days.
C Programming Language
Mo’meN M. Ali
Entering Data into an Array
for ( i = 0 ; i <= 29 ; i++ )
{
printf ( "nEnter marks " ) ;
scanf ( "%d", &states[i] ) ;
}
C Programming Language
Mo’meN M. Ali
Reading data from an array
for ( i = 0 ; i <= 29 ; i++ )
sum= sum + marks[i] ;
C Programming Language
Mo’meN M. Ali
#include <stdio.h>
#define SIZE 4
int main(void)
{
int some_data[SIZE]= {1492, 1066};
int i;
printf("%2s%14sn", i, some_data[i]);
for (i = 0; i < SIZE; i++)
printf("%2d%14dn", i, some_data[i]);
return 0;
}
Output
i some_data[i]
0 1492
1 1066
2 0
3 0
C Programming Language
Mo’meN M. Ali
C Programming Language
Mo’meN M. Ali
#include <stdio.h>
int main(void)
{
const int days[]= {31,28,31,30,31,30,31,31,30,31};
int index;
for (index= 0; index < ( sizeof (days) / sizeof (days[0]) ); index++)
printf("Month %2d has %d days.n", index +1, days[index]);
return 0;
}
Output
Month 1 has 31 days.
Month 2 has 28 days.
Month 3 has 31 days.
Month 4 has 30 days.
Month 5 has 31 days.
Month 6 has 30 days.
Month 7 has 31 days.
Month 8 has 31 days.
Month 9 has 30 days.
Month 10 has 31 days.
C Programming Language
Mo’meN M. Ali
What if you fail to initialize an array?
#include <stdio.h>
#define SIZE 4
int main(void)
{
int no_data[SIZE]; /* uninitialized array */
int i;
printf("%2s%14sn", "i", "no_data[i]");
for (i = 0; i < SIZE; i++)
printf("%2d%14dn", i, no_data[i]);
return 0;
}
C Programming Language
Mo’meN M. Ali
Output (Your Results may vary)
i no_data[i]
0 0
1 4204937
2 4219854
3 2147348480
C Programming Language
Mo’meN M. Ali
Array Bounds
• You have to make sure you use array indices that are within bounds; that
is, you have to make sure they have values valid for the array. For
instance, suppose you make the following declaration:
int doofi[20];
• Then it's your responsibility to make sure the program uses indices only in
the range 0 through 19, because the compiler won't check for you.
C Programming Language
Mo’meN M. Ali
C Programming Language
Mo’meN M. Ali
#include <stdio.h>
#define SIZE 4
int main(void)
{
int value1 = 44;
int arr[SIZE];
int value2 = 88;
int i;
printf("value1 = %d, value2 = %dn", value1, value2);
for (i = -1; i <= SIZE; i++)
arr[i] = 2 * i + 1;
for (i = -1; i < 7; i++)
printf("%2d %dn", i , arr[i]);
printf("value1 = %d, value2 = %dn", value1, value2);
return 0;
}
Output
value1 = 44, value2 = 88
-1 -1
0 1
1 3
2 5
3 7
4 9
5 5
6 1245120
value1 = -1, value2 = 9
C Programming Language
Mo’meN M. Ali
Designated Initializers (C99)
• C99 has added a new capability designated initializers. This feature allows
you to pick and choose which elements are initialized. Suppose, for
example, that you just want to initialize the last element in an array. With
traditional C initialization syntax, you also have to initialize every element
preceding the last one:
int arr[6] = {0,0,0,0,0,212}; // traditional syntax
• With C99, you can use an index in brackets in the initialization list to specify
a particular element:
int arr[6] = {[5] = 212}; // initialize arr[5] to 212
C Programming Language
Mo’meN M. Ali
C Programming Language
Mo’meN M. Ali
// designate.c -- use designated initializers
#include <stdio.h>
#define MONTHS 12
int main(void)
{
int days[MONTHS] = {31,28, [4] = 31,30,31, [1] = 29};
int i;
for (i = 0; i < MONTHS; i++)
printf("%2d %dn", i + 1, days[i]);
return 0;
}
Output
1 31
2 29
3 0
4 0
5 31
6 30
7 31
8 0
9 0
10 0
11 0
12 0
C Programming Language
Mo’meN M. Ali
Suppose you don’t specify the
array size?
int stuff[] = {1, [6] = 23}; // what happens?
int staff[] = {1, [6] = 4, 9, 10}; // what happens?
• The compiler will make the array big enough to accommodate the
initialization values. So stuff will have seven elements, numbered 0-6, and
staff will have two more elements, or 9.
C Programming Language
Mo’meN M. Ali
Specifying an Array Size
#define SIZE 4
int arr[SIZE]; // symbolic integer constant
double lots[144]; // literal integer constant
int n = 5;
int m = 8;
float a1[5]; // yes
float a2[5*2 + 1]; // yes
float a3[sizeof(int) + 1]; // yes
float a4[-4]; // no, size must be > 0
float a5[0]; // no, size must be > 0
float a6[2.5]; // no, size must be an integer
float a7[(int)2.5]; // yes, typecast float to int constant
float a8[n]; // not allowed before C99
float a9[m]; // not allowed before C99
C Programming Language
Mo’meN M. Ali
Exercise 1.0
30 Minutes
MO’MEN M. ALI
C Programming Language
Multidimensional arrays
• A multidimensional array is an array which every element in it is an array.
float rain[5] [12]; // an array of 12 floats
• This tells us that each element is of type float[12]; that is, each of the five
elements of rain is, in itself, an array of 12 float values.
C Programming Language
Mo’meN M. Ali
Initializing a two-dimensional array
#define MONTHS 12 // number of months in a year
#define YEARS 5 // number of years of data
const float rain[YEARS][MONTHS] = {
{4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6}, // Row 0 (rain[0])
{8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3}, // Row 1 (rain[1])
{9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4}, // Row 2 (rain[2])
{7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2}, // Row 3 (rain[3])
{7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2} // Row 4 (rain[4])
};
Review Program: rain
C Programming Language
Mo’meN M. Ali
Pointers And Arrays
• Pointers offer an efficient way to deal with arrays. Indeed.
• Array notation is simply a disguised use of pointers.
1. date == &date[0]; // name of array is the address of the first element
2. dates +2 == &date[2] /* same address */
3. *(dates + 2) == dates[2] /* same value */
4. *(dates +2) /* value of the 3rd element of dates */
5. *dates +2 /* 2 added to the value of the 1st element */
C Programming Language
Mo’meN M. Ali
C Programming Language
Mo’meN M. Ali
#include <stdio.h>
#define SIZE 4
int main(void)
{
short dates [SIZE];
short * pti;
short index;
double bills[SIZE];
double * ptf;
pti = dates; // assign address of array to pointer
ptf = bills;
printf("%23s %15sn", "short", "double");
for (index = 0; index < SIZE; index ++)
printf("pointers + %d: %10p %10pn", index, pti + index, ptf + index);
return 0;
}
Output
short double
pointers + 0: 0x7fff5fbff8dc 0x7fff5fbff8a0
pointers + 1: 0x7fff5fbff8de 0x7fff5fbff8a8
pointers + 2: 0x7fff5fbff8e0 0x7fff5fbff8b0
pointers + 3: 0x7fff5fbff8e2 0x7fff5fbff8b8
C Programming Language
Mo’meN M. Ali
C Programming Language
Mo’meN M. Ali
/* day_mon3.c -- uses pointer notation */
#include <stdio.h>
#define MONTHS 12
int main(void)
{
int days[MONTHS] = {31,28,31,30,31,30,31,31,30,31,30,31};
int index;
for (index = 0; index < MONTHS; index++)
printf("Month %2d has %d days.n",
index +1, *(days + index)); // same as days[index]
return 0;
}
Functions, Arrays, and Pointers
• Suppose you want to write a function that operates on an array. For example,
suppose you want a function that returns the sum of the elements of an
array. Suppose marbles is the name of an array of int. What would the
function call look like? A reasonable guess would be this:
total = sum(marbles); // possible function call
• What would the prototype be? Remember, the name of an array is the
address of its first element,
int sum(int * ar); // corresponding prototype
C Programming Language
Mo’meN M. Ali
C Programming Language
Mo’meN M. Ali
int sum(int * ar) // corresponding definition
{
int i;
int total = 0;
for( i = 0; i < 10; i++) // assume 10 elements
total += ar[i]; // ar[i] the same as *(ar + i)
return total;
}
int sum(int * ar, int n) // more general approach
{
int i;
int total = 0;
for( i = 0; i < n; i++) // use n elements
total += ar[i]; // ar[i] the same as *(ar + i)
return total;
}
Using Pointer Parameters
• A function working on an array needs to know where to start and stop.
• Another way to describe the array is by passing two pointers, with the first
indicating where the array starts (as before) and the second where the array
ends.
• Now, the function can alter the value of the pointer itself, making it point to
each array element in turn.
C Programming Language
Mo’meN M. Ali
Arrays as Arguments
• Because the name of an array is the address of the first element, an actual
argument of an array name requires that the matching formal argument be a
pointer. Also, C interprets int ar[] to mean the same as int * ar.
• All four of the following prototypes are equivalent:
int sum(int *ar, int n);
int sum(int *, int);
int sum(int ar[], int n);
int sum(int [], int);
Review Program: Array as arguments
C Programming Language
Mo’meN M. Ali
Pointer Operations
Review Program: PointerOperations
• Assignment— You can assign an address to a pointer. The assigned value can be, for
example, an array name, a variable preceded by address operator ( & ), or another second
pointer.
• Value finding (dereferencing)— The * operator gives the value stored in the pointed-to
location. Therefore, *ptr1 is initially 100 , the value stored at location 0x7fff5fbff8d0 .
• Taking a pointer address— Like all variables, a pointer variable has an address and a value.
The & operator tells you where the pointer itself is stored.
• Adding an integer to a pointer— You can use the + operator to add an integer to a pointer
or a pointer to an integer. In either case, the integer is multiplied by the number of bytes in
the pointed-to type, and the result is added to the original address. This makes ptr1 + 4 the
same as &urn[4] .
C Programming Language
Mo’meN M. Ali
• Incrementing a pointer— Incrementing a pointer to an array element makes it move to the
next element of the array. Therefore, ptr1++ increases the numerical value of ptr1 by 4 (4
bytes per int on our system) and makes ptr1 point to urn[1].
• Subtracting an integer from a pointer— You can use the - operator to subtract an integer
from a pointer; the pointer has to be the first operand and the integer value the second
operand. The integer is multiplied by the number of bytes in the pointed-to type, and the
result is subtracted from the original address.
• Decrementing a pointer— Of course, you can also decrement a pointer. In this example,
decrementing ptr2 makes it point to the second array element instead of the third. Note
that you can use both the prefix and postfix forms of the increment and decrement
operators.
• Differencing— You can find the difference between two pointers. Normally, you do this for
two pointers to elements that are in the same array to find out how far apart the elements
are. The result is in the same units as the type size.
• Comparisons— You can use the relational operators to compare the values of two pointers,
provided the pointers are of the same type.
C Programming Language
Mo’meN M. Ali
Using const with formal
parameters
• If a function is intent is that it not change the contents of the array, use the keyword
const when declaring the formal parameter in the prototype and in the function
definition.
C Programming Language
Mo’meN M. Ali
Pointers to multidimensional
Arrays
• Since 2D-Arrays are Arrays of arrays, therefore we need a pointer-to-array instead of a
pointer-to-element.
int (* pz)[2]; // pz points to an array of 2 ints. (Can be used as 2D
// Array pointer).
int * pax[2]; // pax is an array of two pointers-to-int (Can no be used as 2D
// Array Pointer).
C Programming Language
Mo’meN M. Ali
Pointer Compatibility
• The rules for assigning one pointer to another are tighter than the rules for numeric
types. For example, you can assign an int value to a double variable without using a
type conversion, but you can’t do the same for pointers to these two types:
int n= 5;
double x;
int * p1= &n;
double * pd= &x;
x= n; // implicit type conversion
pd= p1; // compile-time error
C Programming Language
Mo’meN M. Ali
int * pt;
int (*pa)[3];
int ar1[2][3];
int ar2[3][2];
int **p2; // a pointer to a pointer
pt = &ar1[0][0]; // both pointer-to-int
pt = ar1[0]; // both pointer-to-int
pt = ar1; // not valid
pa = ar1; // both pointer-to-int[3]
pa = ar2; // not valid
p2 = &pt; // both pointer-to-int *
*p2 = ar2[0]; // both pointer-to-int
p2 = ar2; // not valid
Review Program: Pointers and 2D-Arrays
C Programming Language
Mo’meN M. Ali
Functions and multidimensional
arrays
• If you want to write functions that process two-dimensional arrays, you need to
understand pointers well enough to make the proper declarations for function
arguments. In the function body itself, you can usually get by with array notation.
int junk[3][4] = { {2,4,5,8}, {3,5,6,9}, {12,10,8,6} };
int i, j;
int total = 0;
for (i = 0; i < 3 ; i++)
total += sum(junk[i], 4); // junk[i] -- one-dimensional array
C Programming Language
Mo’meN M. Ali
Exercise 1.1
30 Minutes
MO’MEN M. ALI
C Programming Language
Variable-length arrays (VLAs)
• You may have noticed that you can not use a variable size multidimensional array as an
argument, that is because you always have to use a constant columns. Well VLAs is the
C99 way to solve this problem. You can use VLAs to pass a variable length
multidimensional array.
int sum2d(int rows, int cols, int ar[rows][cols]); // array a VLA
int sum2d(int, int, int ar[*][*]); // array a VLA, names omitted
• rows and cols are two variable arguments that can be passed at run-time.
• rows and cols must be define before the array.
int sum2d(int ar[rows][cols], int rows, int cols); // invalid order
Review Program: Functions usingVLAs
C Programming Language
Mo’meN M. Ali
More dimensions
• Everything we have said about two-dimensional arrays can be generalized
to three-dimensional arrays and further. You can declare a three-
dimensional array this way:
int box[10][20][30];
• You can visualize a one-dimensional array as a row of data, a two-
dimensional array as a table of data, and a three-dimensional array as a
stack of data tables. For example, you can visualize the box array as 10
two-dimensional arrays (each 20×30) stacked atop each other.
C Programming Language
Mo’meN M. Ali
Compound Literals
MO’MEN M. ALI
C Programming Language
Search Yourself
THANK YOUSEE YOU SOON
C Programming Language
Mo’meN M. Ali

More Related Content

What's hot

Functions, Strings ,Storage classes in C
 Functions, Strings ,Storage classes in C Functions, Strings ,Storage classes in C
Functions, Strings ,Storage classes in C
arshpreetkaur07
 
C programming session 09
C programming session 09C programming session 09
C programming session 09Dushmanta Nath
 
Structures-2
Structures-2Structures-2
Structures-2
arshpreetkaur07
 
Chapter Eight(3)
Chapter Eight(3)Chapter Eight(3)
Chapter Eight(3)bolovv
 
Chapter Eight(1)
Chapter Eight(1)Chapter Eight(1)
Chapter Eight(1)bolovv
 
C Programming Unit-2
C Programming Unit-2C Programming Unit-2
C Programming Unit-2
Vikram Nandini
 
C Programming - Refresher - Part III
C Programming - Refresher - Part IIIC Programming - Refresher - Part III
C Programming - Refresher - Part III
Emertxe Information Technologies Pvt Ltd
 
Tutorial on c language programming
Tutorial on c language programmingTutorial on c language programming
Tutorial on c language programming
Sudheer Kiran
 
Introduction to c programming
Introduction to c programmingIntroduction to c programming
Introduction to c programming
Infinity Tech Solutions
 
C++
C++C++
02a fundamental c++ types, arithmetic
02a   fundamental c++ types, arithmetic 02a   fundamental c++ types, arithmetic
02a fundamental c++ types, arithmetic
Manzoor ALam
 
Learn c++ Programming Language
Learn c++ Programming LanguageLearn c++ Programming Language
Learn c++ Programming Language
Steve Johnson
 
C++ Language
C++ LanguageC++ Language
C++ Language
Syed Zaid Irshad
 
Basics of c++ Programming Language
Basics of c++ Programming LanguageBasics of c++ Programming Language
Basics of c++ Programming Language
Ahmad Idrees
 
Theory1&amp;2
Theory1&amp;2Theory1&amp;2
Unit 3
Unit 3 Unit 3
Unit 3
GOWSIKRAJAP
 
C interview-questions-techpreparation
C interview-questions-techpreparationC interview-questions-techpreparation
C interview-questions-techpreparationKushaal Singla
 
C++ questions And Answer
C++ questions And AnswerC++ questions And Answer
C++ questions And Answer
lavparmar007
 
C programming session8
C programming  session8C programming  session8
C programming session8
Keroles karam khalil
 
CBSE Class 12 Computer Science(083) Sample Question Paper 2020-21
CBSE Class 12 Computer Science(083) Sample Question Paper 2020-21CBSE Class 12 Computer Science(083) Sample Question Paper 2020-21
CBSE Class 12 Computer Science(083) Sample Question Paper 2020-21
chinthala Vijaya Kumar
 

What's hot (20)

Functions, Strings ,Storage classes in C
 Functions, Strings ,Storage classes in C Functions, Strings ,Storage classes in C
Functions, Strings ,Storage classes in C
 
C programming session 09
C programming session 09C programming session 09
C programming session 09
 
Structures-2
Structures-2Structures-2
Structures-2
 
Chapter Eight(3)
Chapter Eight(3)Chapter Eight(3)
Chapter Eight(3)
 
Chapter Eight(1)
Chapter Eight(1)Chapter Eight(1)
Chapter Eight(1)
 
C Programming Unit-2
C Programming Unit-2C Programming Unit-2
C Programming Unit-2
 
C Programming - Refresher - Part III
C Programming - Refresher - Part IIIC Programming - Refresher - Part III
C Programming - Refresher - Part III
 
Tutorial on c language programming
Tutorial on c language programmingTutorial on c language programming
Tutorial on c language programming
 
Introduction to c programming
Introduction to c programmingIntroduction to c programming
Introduction to c programming
 
C++
C++C++
C++
 
02a fundamental c++ types, arithmetic
02a   fundamental c++ types, arithmetic 02a   fundamental c++ types, arithmetic
02a fundamental c++ types, arithmetic
 
Learn c++ Programming Language
Learn c++ Programming LanguageLearn c++ Programming Language
Learn c++ Programming Language
 
C++ Language
C++ LanguageC++ Language
C++ Language
 
Basics of c++ Programming Language
Basics of c++ Programming LanguageBasics of c++ Programming Language
Basics of c++ Programming Language
 
Theory1&amp;2
Theory1&amp;2Theory1&amp;2
Theory1&amp;2
 
Unit 3
Unit 3 Unit 3
Unit 3
 
C interview-questions-techpreparation
C interview-questions-techpreparationC interview-questions-techpreparation
C interview-questions-techpreparation
 
C++ questions And Answer
C++ questions And AnswerC++ questions And Answer
C++ questions And Answer
 
C programming session8
C programming  session8C programming  session8
C programming session8
 
CBSE Class 12 Computer Science(083) Sample Question Paper 2020-21
CBSE Class 12 Computer Science(083) Sample Question Paper 2020-21CBSE Class 12 Computer Science(083) Sample Question Paper 2020-21
CBSE Class 12 Computer Science(083) Sample Question Paper 2020-21
 

Viewers also liked

Array in Java
Array in JavaArray in Java
Array in Java
Ali shah
 
Software Engineering for Web Applications
Software Engineering for Web ApplicationsSoftware Engineering for Web Applications
Software Engineering for Web Applications
Moh'd Shakeb Baig
 
Fundamentals of data structure in c s. sahni , s. anderson freed and e. horowitz
Fundamentals of data structure in c s. sahni , s. anderson freed and e. horowitzFundamentals of data structure in c s. sahni , s. anderson freed and e. horowitz
Fundamentals of data structure in c s. sahni , s. anderson freed and e. horowitz
JAKEwook
 
Pointers C programming
Pointers  C programmingPointers  C programming
Pointers C programming
Appili Vamsi Krishna
 
Pointers - DataStructures
Pointers - DataStructuresPointers - DataStructures
Pointers - DataStructures
Omair Imtiaz Ansari
 
C programming pointer
C  programming pointerC  programming pointer
C programming pointer
argusacademy
 
Pointers in C Programming
Pointers in C ProgrammingPointers in C Programming
Pointers in C Programming
Jasleen Kaur (Chandigarh University)
 
2- Dimensional Arrays
2- Dimensional Arrays2- Dimensional Arrays
2- Dimensional Arrays
Education Front
 
Two dimensional array
Two dimensional arrayTwo dimensional array
Two dimensional array
Rajendran
 
2CPP06 - Arrays and Pointers
2CPP06 - Arrays and Pointers2CPP06 - Arrays and Pointers
2CPP06 - Arrays and Pointers
Michael Heron
 
C pointer
C pointerC pointer
Procedural programming
Procedural programmingProcedural programming
Procedural programming
Ankit92Chitnavis
 
4 the relational data model and relational database constraints
4 the relational data model and relational database constraints4 the relational data model and relational database constraints
4 the relational data model and relational database constraintsKumar
 
Procedural vs. object oriented programming
Procedural vs. object oriented programmingProcedural vs. object oriented programming
Procedural vs. object oriented programming
Haris Bin Zahid
 
Data structure and its types
Data structure and its typesData structure and its types
Data structure and its typesNavtar Sidhu Brar
 
Lect 1. introduction to programming languages
Lect 1. introduction to programming languagesLect 1. introduction to programming languages
Lect 1. introduction to programming languagesVarun Garg
 
DATA STRUCTURES
DATA STRUCTURESDATA STRUCTURES
DATA STRUCTURES
bca2010
 

Viewers also liked (18)

Array in Java
Array in JavaArray in Java
Array in Java
 
Software Engineering for Web Applications
Software Engineering for Web ApplicationsSoftware Engineering for Web Applications
Software Engineering for Web Applications
 
Fundamentals of data structure in c s. sahni , s. anderson freed and e. horowitz
Fundamentals of data structure in c s. sahni , s. anderson freed and e. horowitzFundamentals of data structure in c s. sahni , s. anderson freed and e. horowitz
Fundamentals of data structure in c s. sahni , s. anderson freed and e. horowitz
 
Pointers C programming
Pointers  C programmingPointers  C programming
Pointers C programming
 
Pointers - DataStructures
Pointers - DataStructuresPointers - DataStructures
Pointers - DataStructures
 
C programming pointer
C  programming pointerC  programming pointer
C programming pointer
 
Pointers in C Programming
Pointers in C ProgrammingPointers in C Programming
Pointers in C Programming
 
2- Dimensional Arrays
2- Dimensional Arrays2- Dimensional Arrays
2- Dimensional Arrays
 
Two dimensional array
Two dimensional arrayTwo dimensional array
Two dimensional array
 
2CPP06 - Arrays and Pointers
2CPP06 - Arrays and Pointers2CPP06 - Arrays and Pointers
2CPP06 - Arrays and Pointers
 
C pointer
C pointerC pointer
C pointer
 
Procedural programming
Procedural programmingProcedural programming
Procedural programming
 
4 the relational data model and relational database constraints
4 the relational data model and relational database constraints4 the relational data model and relational database constraints
4 the relational data model and relational database constraints
 
Procedural vs. object oriented programming
Procedural vs. object oriented programmingProcedural vs. object oriented programming
Procedural vs. object oriented programming
 
Web engineering lecture 1
Web engineering lecture 1Web engineering lecture 1
Web engineering lecture 1
 
Data structure and its types
Data structure and its typesData structure and its types
Data structure and its types
 
Lect 1. introduction to programming languages
Lect 1. introduction to programming languagesLect 1. introduction to programming languages
Lect 1. introduction to programming languages
 
DATA STRUCTURES
DATA STRUCTURESDATA STRUCTURES
DATA STRUCTURES
 

Similar to C programming & data structure [arrays & pointers]

Ch7
Ch7Ch7
C language
C languageC language
C language
Priya698357
 
Arrays basics
Arrays basicsArrays basics
Arrays basics
sudhirvegad
 
Chapter1.pptx
Chapter1.pptxChapter1.pptx
Chapter1.pptx
WondimuBantihun1
 
Programming Fundamentals Arrays and Strings
Programming Fundamentals   Arrays and Strings Programming Fundamentals   Arrays and Strings
Programming Fundamentals Arrays and Strings
imtiazalijoono
 
8 arrays and pointers
8  arrays and pointers8  arrays and pointers
8 arrays and pointers
MomenMostafa
 
Abir ppt3
Abir ppt3Abir ppt3
Abir ppt3
abir96
 
Project presentation(View calender)
Project presentation(View calender)Project presentation(View calender)
Project presentation(View calender)
Ikhtiar Khan Sohan
 
Unit i intro-operators
Unit   i intro-operatorsUnit   i intro-operators
Unit i intro-operators
HINAPARVEENAlXC
 
COM1407: Arrays
COM1407: ArraysCOM1407: Arrays
COM1407: Arrays
Hemantha Kulathilake
 
Session 5-exersice
Session 5-exersiceSession 5-exersice
Session 5-exersice
Keroles karam khalil
 
c++ referesher 1.pdf
c++ referesher 1.pdfc++ referesher 1.pdf
c++ referesher 1.pdf
AnkurSingh656748
 
C prog ppt
C prog pptC prog ppt
C prog ppt
xinoe
 
R Programming Intro
R Programming IntroR Programming Intro
R Programming Intro
062MayankSinghal
 
Arrays in C
Arrays in CArrays in C
Arrays in C
Kamruddin Nur
 
the refernce of programming C notes ppt.pptx
the refernce of programming C notes ppt.pptxthe refernce of programming C notes ppt.pptx
the refernce of programming C notes ppt.pptx
AnkitaVerma776806
 
arrays
arraysarrays
arrays
teach4uin
 

Similar to C programming & data structure [arrays & pointers] (20)

Ch7
Ch7Ch7
Ch7
 
Ch7
Ch7Ch7
Ch7
 
C language
C languageC language
C language
 
Arrays basics
Arrays basicsArrays basics
Arrays basics
 
Chapter1.pptx
Chapter1.pptxChapter1.pptx
Chapter1.pptx
 
Programming Fundamentals Arrays and Strings
Programming Fundamentals   Arrays and Strings Programming Fundamentals   Arrays and Strings
Programming Fundamentals Arrays and Strings
 
8 arrays and pointers
8  arrays and pointers8  arrays and pointers
8 arrays and pointers
 
Abir ppt3
Abir ppt3Abir ppt3
Abir ppt3
 
Project presentation(View calender)
Project presentation(View calender)Project presentation(View calender)
Project presentation(View calender)
 
Unit i intro-operators
Unit   i intro-operatorsUnit   i intro-operators
Unit i intro-operators
 
COM1407: Arrays
COM1407: ArraysCOM1407: Arrays
COM1407: Arrays
 
Session 5-exersice
Session 5-exersiceSession 5-exersice
Session 5-exersice
 
c++ referesher 1.pdf
c++ referesher 1.pdfc++ referesher 1.pdf
c++ referesher 1.pdf
 
C prog ppt
C prog pptC prog ppt
C prog ppt
 
Introduction to c part 2
Introduction to c   part  2Introduction to c   part  2
Introduction to c part 2
 
R Programming Intro
R Programming IntroR Programming Intro
R Programming Intro
 
L5 array
L5 arrayL5 array
L5 array
 
Arrays in C
Arrays in CArrays in C
Arrays in C
 
the refernce of programming C notes ppt.pptx
the refernce of programming C notes ppt.pptxthe refernce of programming C notes ppt.pptx
the refernce of programming C notes ppt.pptx
 
arrays
arraysarrays
arrays
 

More from MomenMostafa

9 character string &amp; string library
9  character string &amp; string library9  character string &amp; string library
9 character string &amp; string library
MomenMostafa
 
7 functions
7  functions7  functions
7 functions
MomenMostafa
 
6 c control statements branching &amp; jumping
6 c control statements branching &amp; jumping6 c control statements branching &amp; jumping
6 c control statements branching &amp; jumping
MomenMostafa
 
5 c control statements looping
5  c control statements looping5  c control statements looping
5 c control statements looping
MomenMostafa
 
4 operators, expressions &amp; statements
4  operators, expressions &amp; statements4  operators, expressions &amp; statements
4 operators, expressions &amp; statements
MomenMostafa
 
2 data and c
2 data and c2 data and c
2 data and c
MomenMostafa
 
1 introducing c language
1  introducing c language1  introducing c language
1 introducing c language
MomenMostafa
 
3 character strings and formatted input output
3  character strings and formatted input output3  character strings and formatted input output
3 character strings and formatted input output
MomenMostafa
 
Embedded System Practical Workshop using the ARM Processor
Embedded System Practical Workshop using the ARM ProcessorEmbedded System Practical Workshop using the ARM Processor
Embedded System Practical Workshop using the ARM ProcessorMomenMostafa
 

More from MomenMostafa (9)

9 character string &amp; string library
9  character string &amp; string library9  character string &amp; string library
9 character string &amp; string library
 
7 functions
7  functions7  functions
7 functions
 
6 c control statements branching &amp; jumping
6 c control statements branching &amp; jumping6 c control statements branching &amp; jumping
6 c control statements branching &amp; jumping
 
5 c control statements looping
5  c control statements looping5  c control statements looping
5 c control statements looping
 
4 operators, expressions &amp; statements
4  operators, expressions &amp; statements4  operators, expressions &amp; statements
4 operators, expressions &amp; statements
 
2 data and c
2 data and c2 data and c
2 data and c
 
1 introducing c language
1  introducing c language1  introducing c language
1 introducing c language
 
3 character strings and formatted input output
3  character strings and formatted input output3  character strings and formatted input output
3 character strings and formatted input output
 
Embedded System Practical Workshop using the ARM Processor
Embedded System Practical Workshop using the ARM ProcessorEmbedded System Practical Workshop using the ARM Processor
Embedded System Practical Workshop using the ARM Processor
 

Recently uploaded

Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 

Recently uploaded (20)

Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 

C programming & data structure [arrays & pointers]

  • 1. CProgramming Language & Data Structure Prepared by: Mo’meN M. Ali E-mail: momen.1993@live.com
  • 2. References • www.stackoverflow.com • C Primer Plus 6th Edition • Let Us C 5th Edition • The C Programming Language 2nd Edition • C Modern Approach 2nd Edition • Data Structures and Algorithm Analysis in C 2nd Edition Mo’meN M. Ali C Programming Language
  • 3. Review Programs are uploaded to this Git repo https://github.com/Mo2meN- Ali/x86/tree/master/Programming%20Course/1- Arrays%20%26%20Pointers C Programming Language Mo’meN M. Ali
  • 4. Topics • Arrays & Pointers. • Character String & String Functions. • Storage Classes, Linkage & Memory Management. • File Input/Output. • Structures & Other Data Formats. • Bit Fiddling. • The C Preprocessor & The C Library. • Algorithm Analysis & ADT. • Stacks & Queues. • Trees. C Programming Language Mo’meN M. Ali
  • 5. Today You Will Learn About: • Keyword: static. • Operators: & * (unary). • How to create and initialize arrays. • Pointers. • Writing functions that process arrays. • Two-dimensional arrays. C Programming Language Mo’meN M. Ali
  • 6. Arrays • An array is composed of a series of elements of one data type. • An array declaration tells the compiler how many elements the array contains and what the type is for these elements. • To access elements in an array, you identify an individual element by using its subscript number, also called its index,The numbering starts with 0. C Programming Language Mo’meN M. Ali /* some array declarations */ int main(void) { float candy[365]; /* array of 365 floats */ char code[12]; /* array of 12 chars */ int states[50]; /* array of 50 ints */ }
  • 7. C Programming Language Mo’meN M. Ali #include <stdio.h> #define MONTHS 12 int main(void) { int days[MONTHS]= {31,28,31,30,31,30,31,31,30,31,30,31}; int index; for (index = 0; index < MONTHS; index++) printf("Month %d has %2d days.n", index +1, days[index]); return 0; }
  • 8. Output Month 1 has 31 days. Month 2 has 28 days. Month 3 has 31 days. Month 4 has 30 days. Month 5 has 31 days. Month 6 has 30 days. Month 7 has 31 days. Month 8 has 31 days. Month 9 has 30 days. Month 10 has 31 days. Month 11 has 30 days. Month 12 has 31 days. C Programming Language Mo’meN M. Ali
  • 9. Entering Data into an Array for ( i = 0 ; i <= 29 ; i++ ) { printf ( "nEnter marks " ) ; scanf ( "%d", &states[i] ) ; } C Programming Language Mo’meN M. Ali Reading data from an array for ( i = 0 ; i <= 29 ; i++ ) sum= sum + marks[i] ;
  • 10. C Programming Language Mo’meN M. Ali #include <stdio.h> #define SIZE 4 int main(void) { int some_data[SIZE]= {1492, 1066}; int i; printf("%2s%14sn", i, some_data[i]); for (i = 0; i < SIZE; i++) printf("%2d%14dn", i, some_data[i]); return 0; }
  • 11. Output i some_data[i] 0 1492 1 1066 2 0 3 0 C Programming Language Mo’meN M. Ali
  • 12. C Programming Language Mo’meN M. Ali #include <stdio.h> int main(void) { const int days[]= {31,28,31,30,31,30,31,31,30,31}; int index; for (index= 0; index < ( sizeof (days) / sizeof (days[0]) ); index++) printf("Month %2d has %d days.n", index +1, days[index]); return 0; }
  • 13. Output Month 1 has 31 days. Month 2 has 28 days. Month 3 has 31 days. Month 4 has 30 days. Month 5 has 31 days. Month 6 has 30 days. Month 7 has 31 days. Month 8 has 31 days. Month 9 has 30 days. Month 10 has 31 days. C Programming Language Mo’meN M. Ali
  • 14. What if you fail to initialize an array? #include <stdio.h> #define SIZE 4 int main(void) { int no_data[SIZE]; /* uninitialized array */ int i; printf("%2s%14sn", "i", "no_data[i]"); for (i = 0; i < SIZE; i++) printf("%2d%14dn", i, no_data[i]); return 0; } C Programming Language Mo’meN M. Ali
  • 15. Output (Your Results may vary) i no_data[i] 0 0 1 4204937 2 4219854 3 2147348480 C Programming Language Mo’meN M. Ali
  • 16. Array Bounds • You have to make sure you use array indices that are within bounds; that is, you have to make sure they have values valid for the array. For instance, suppose you make the following declaration: int doofi[20]; • Then it's your responsibility to make sure the program uses indices only in the range 0 through 19, because the compiler won't check for you. C Programming Language Mo’meN M. Ali
  • 17. C Programming Language Mo’meN M. Ali #include <stdio.h> #define SIZE 4 int main(void) { int value1 = 44; int arr[SIZE]; int value2 = 88; int i; printf("value1 = %d, value2 = %dn", value1, value2); for (i = -1; i <= SIZE; i++) arr[i] = 2 * i + 1; for (i = -1; i < 7; i++) printf("%2d %dn", i , arr[i]); printf("value1 = %d, value2 = %dn", value1, value2); return 0; }
  • 18. Output value1 = 44, value2 = 88 -1 -1 0 1 1 3 2 5 3 7 4 9 5 5 6 1245120 value1 = -1, value2 = 9 C Programming Language Mo’meN M. Ali
  • 19. Designated Initializers (C99) • C99 has added a new capability designated initializers. This feature allows you to pick and choose which elements are initialized. Suppose, for example, that you just want to initialize the last element in an array. With traditional C initialization syntax, you also have to initialize every element preceding the last one: int arr[6] = {0,0,0,0,0,212}; // traditional syntax • With C99, you can use an index in brackets in the initialization list to specify a particular element: int arr[6] = {[5] = 212}; // initialize arr[5] to 212 C Programming Language Mo’meN M. Ali
  • 20. C Programming Language Mo’meN M. Ali // designate.c -- use designated initializers #include <stdio.h> #define MONTHS 12 int main(void) { int days[MONTHS] = {31,28, [4] = 31,30,31, [1] = 29}; int i; for (i = 0; i < MONTHS; i++) printf("%2d %dn", i + 1, days[i]); return 0; }
  • 21. Output 1 31 2 29 3 0 4 0 5 31 6 30 7 31 8 0 9 0 10 0 11 0 12 0 C Programming Language Mo’meN M. Ali
  • 22. Suppose you don’t specify the array size? int stuff[] = {1, [6] = 23}; // what happens? int staff[] = {1, [6] = 4, 9, 10}; // what happens? • The compiler will make the array big enough to accommodate the initialization values. So stuff will have seven elements, numbered 0-6, and staff will have two more elements, or 9. C Programming Language Mo’meN M. Ali
  • 23. Specifying an Array Size #define SIZE 4 int arr[SIZE]; // symbolic integer constant double lots[144]; // literal integer constant int n = 5; int m = 8; float a1[5]; // yes float a2[5*2 + 1]; // yes float a3[sizeof(int) + 1]; // yes float a4[-4]; // no, size must be > 0 float a5[0]; // no, size must be > 0 float a6[2.5]; // no, size must be an integer float a7[(int)2.5]; // yes, typecast float to int constant float a8[n]; // not allowed before C99 float a9[m]; // not allowed before C99 C Programming Language Mo’meN M. Ali
  • 24. Exercise 1.0 30 Minutes MO’MEN M. ALI C Programming Language
  • 25. Multidimensional arrays • A multidimensional array is an array which every element in it is an array. float rain[5] [12]; // an array of 12 floats • This tells us that each element is of type float[12]; that is, each of the five elements of rain is, in itself, an array of 12 float values. C Programming Language Mo’meN M. Ali
  • 26. Initializing a two-dimensional array #define MONTHS 12 // number of months in a year #define YEARS 5 // number of years of data const float rain[YEARS][MONTHS] = { {4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6}, // Row 0 (rain[0]) {8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3}, // Row 1 (rain[1]) {9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4}, // Row 2 (rain[2]) {7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2}, // Row 3 (rain[3]) {7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2} // Row 4 (rain[4]) }; Review Program: rain C Programming Language Mo’meN M. Ali
  • 27. Pointers And Arrays • Pointers offer an efficient way to deal with arrays. Indeed. • Array notation is simply a disguised use of pointers. 1. date == &date[0]; // name of array is the address of the first element 2. dates +2 == &date[2] /* same address */ 3. *(dates + 2) == dates[2] /* same value */ 4. *(dates +2) /* value of the 3rd element of dates */ 5. *dates +2 /* 2 added to the value of the 1st element */ C Programming Language Mo’meN M. Ali
  • 28. C Programming Language Mo’meN M. Ali #include <stdio.h> #define SIZE 4 int main(void) { short dates [SIZE]; short * pti; short index; double bills[SIZE]; double * ptf; pti = dates; // assign address of array to pointer ptf = bills; printf("%23s %15sn", "short", "double"); for (index = 0; index < SIZE; index ++) printf("pointers + %d: %10p %10pn", index, pti + index, ptf + index); return 0; }
  • 29. Output short double pointers + 0: 0x7fff5fbff8dc 0x7fff5fbff8a0 pointers + 1: 0x7fff5fbff8de 0x7fff5fbff8a8 pointers + 2: 0x7fff5fbff8e0 0x7fff5fbff8b0 pointers + 3: 0x7fff5fbff8e2 0x7fff5fbff8b8 C Programming Language Mo’meN M. Ali
  • 30. C Programming Language Mo’meN M. Ali /* day_mon3.c -- uses pointer notation */ #include <stdio.h> #define MONTHS 12 int main(void) { int days[MONTHS] = {31,28,31,30,31,30,31,31,30,31,30,31}; int index; for (index = 0; index < MONTHS; index++) printf("Month %2d has %d days.n", index +1, *(days + index)); // same as days[index] return 0; }
  • 31. Functions, Arrays, and Pointers • Suppose you want to write a function that operates on an array. For example, suppose you want a function that returns the sum of the elements of an array. Suppose marbles is the name of an array of int. What would the function call look like? A reasonable guess would be this: total = sum(marbles); // possible function call • What would the prototype be? Remember, the name of an array is the address of its first element, int sum(int * ar); // corresponding prototype C Programming Language Mo’meN M. Ali
  • 32. C Programming Language Mo’meN M. Ali int sum(int * ar) // corresponding definition { int i; int total = 0; for( i = 0; i < 10; i++) // assume 10 elements total += ar[i]; // ar[i] the same as *(ar + i) return total; } int sum(int * ar, int n) // more general approach { int i; int total = 0; for( i = 0; i < n; i++) // use n elements total += ar[i]; // ar[i] the same as *(ar + i) return total; }
  • 33. Using Pointer Parameters • A function working on an array needs to know where to start and stop. • Another way to describe the array is by passing two pointers, with the first indicating where the array starts (as before) and the second where the array ends. • Now, the function can alter the value of the pointer itself, making it point to each array element in turn. C Programming Language Mo’meN M. Ali
  • 34. Arrays as Arguments • Because the name of an array is the address of the first element, an actual argument of an array name requires that the matching formal argument be a pointer. Also, C interprets int ar[] to mean the same as int * ar. • All four of the following prototypes are equivalent: int sum(int *ar, int n); int sum(int *, int); int sum(int ar[], int n); int sum(int [], int); Review Program: Array as arguments C Programming Language Mo’meN M. Ali
  • 35. Pointer Operations Review Program: PointerOperations • Assignment— You can assign an address to a pointer. The assigned value can be, for example, an array name, a variable preceded by address operator ( & ), or another second pointer. • Value finding (dereferencing)— The * operator gives the value stored in the pointed-to location. Therefore, *ptr1 is initially 100 , the value stored at location 0x7fff5fbff8d0 . • Taking a pointer address— Like all variables, a pointer variable has an address and a value. The & operator tells you where the pointer itself is stored. • Adding an integer to a pointer— You can use the + operator to add an integer to a pointer or a pointer to an integer. In either case, the integer is multiplied by the number of bytes in the pointed-to type, and the result is added to the original address. This makes ptr1 + 4 the same as &urn[4] . C Programming Language Mo’meN M. Ali
  • 36. • Incrementing a pointer— Incrementing a pointer to an array element makes it move to the next element of the array. Therefore, ptr1++ increases the numerical value of ptr1 by 4 (4 bytes per int on our system) and makes ptr1 point to urn[1]. • Subtracting an integer from a pointer— You can use the - operator to subtract an integer from a pointer; the pointer has to be the first operand and the integer value the second operand. The integer is multiplied by the number of bytes in the pointed-to type, and the result is subtracted from the original address. • Decrementing a pointer— Of course, you can also decrement a pointer. In this example, decrementing ptr2 makes it point to the second array element instead of the third. Note that you can use both the prefix and postfix forms of the increment and decrement operators. • Differencing— You can find the difference between two pointers. Normally, you do this for two pointers to elements that are in the same array to find out how far apart the elements are. The result is in the same units as the type size. • Comparisons— You can use the relational operators to compare the values of two pointers, provided the pointers are of the same type. C Programming Language Mo’meN M. Ali
  • 37. Using const with formal parameters • If a function is intent is that it not change the contents of the array, use the keyword const when declaring the formal parameter in the prototype and in the function definition. C Programming Language Mo’meN M. Ali
  • 38. Pointers to multidimensional Arrays • Since 2D-Arrays are Arrays of arrays, therefore we need a pointer-to-array instead of a pointer-to-element. int (* pz)[2]; // pz points to an array of 2 ints. (Can be used as 2D // Array pointer). int * pax[2]; // pax is an array of two pointers-to-int (Can no be used as 2D // Array Pointer). C Programming Language Mo’meN M. Ali
  • 39. Pointer Compatibility • The rules for assigning one pointer to another are tighter than the rules for numeric types. For example, you can assign an int value to a double variable without using a type conversion, but you can’t do the same for pointers to these two types: int n= 5; double x; int * p1= &n; double * pd= &x; x= n; // implicit type conversion pd= p1; // compile-time error C Programming Language Mo’meN M. Ali
  • 40. int * pt; int (*pa)[3]; int ar1[2][3]; int ar2[3][2]; int **p2; // a pointer to a pointer pt = &ar1[0][0]; // both pointer-to-int pt = ar1[0]; // both pointer-to-int pt = ar1; // not valid pa = ar1; // both pointer-to-int[3] pa = ar2; // not valid p2 = &pt; // both pointer-to-int * *p2 = ar2[0]; // both pointer-to-int p2 = ar2; // not valid Review Program: Pointers and 2D-Arrays C Programming Language Mo’meN M. Ali
  • 41. Functions and multidimensional arrays • If you want to write functions that process two-dimensional arrays, you need to understand pointers well enough to make the proper declarations for function arguments. In the function body itself, you can usually get by with array notation. int junk[3][4] = { {2,4,5,8}, {3,5,6,9}, {12,10,8,6} }; int i, j; int total = 0; for (i = 0; i < 3 ; i++) total += sum(junk[i], 4); // junk[i] -- one-dimensional array C Programming Language Mo’meN M. Ali
  • 42. Exercise 1.1 30 Minutes MO’MEN M. ALI C Programming Language
  • 43. Variable-length arrays (VLAs) • You may have noticed that you can not use a variable size multidimensional array as an argument, that is because you always have to use a constant columns. Well VLAs is the C99 way to solve this problem. You can use VLAs to pass a variable length multidimensional array. int sum2d(int rows, int cols, int ar[rows][cols]); // array a VLA int sum2d(int, int, int ar[*][*]); // array a VLA, names omitted • rows and cols are two variable arguments that can be passed at run-time. • rows and cols must be define before the array. int sum2d(int ar[rows][cols], int rows, int cols); // invalid order Review Program: Functions usingVLAs C Programming Language Mo’meN M. Ali
  • 44. More dimensions • Everything we have said about two-dimensional arrays can be generalized to three-dimensional arrays and further. You can declare a three- dimensional array this way: int box[10][20][30]; • You can visualize a one-dimensional array as a row of data, a two- dimensional array as a table of data, and a three-dimensional array as a stack of data tables. For example, you can visualize the box array as 10 two-dimensional arrays (each 20×30) stacked atop each other. C Programming Language Mo’meN M. Ali
  • 45. Compound Literals MO’MEN M. ALI C Programming Language Search Yourself
  • 46. THANK YOUSEE YOU SOON C Programming Language Mo’meN M. Ali