Lecture 15
Lecture 15
1
Marks program
2
Array initialization
3
Bounds Checking
• In C there is no check to see if the subscript used for an
array exceeds the size of the array
• Data entered with a subscript exceeding the array size
will simply be placed in memory outside the array
0 1 2 3 4 5 6 7 8 9
500 504 508 512 516 520 524 528 532 530
5
Value of array element pass to a function
0 1 2 3 4 5 6
55 65 75 56 78 78 90
500 504 508 512 516 520 524
ii ==406
2
3
1
5
7
display(marks[6])
display(marks[2])
display(marks[5])
display(marks[3])
display(marks[4])
display(marks[o])
display(marks[1])
display(90)
display(75)
display(78)
display(56)
Program output display(55)
display(65)
55
65
75
56
78
78
90 6
Address of array element pass to a function
0 1 2 3 4 5 6
55 65 75 56 78 78 90
500 504 508 512 516 520 524
ii ==406
2
3
1
5
7
display(&marks[4])
display(&marks[2])
display(&marks[3])
display(&marks[1])
display(&marks[5])
display(&marks[6])
display(&marks[o])
Program output display(508)
display(516)
display(512)
display(504)
display(520)
display(524)
display(500)
55
65 *n 512
520
*n 524
516
504
508
500
75 *(512)
*(508) = 90
*(520)
*(524)
*(516)
*(504)
*(500) 56
78
65
75
55
56
78
78
90 7
Pointer arithmetic
• Addition of a number to a pointer
*j 500
504 *k 516
0 1 2 3 4 5
*j 10
10 20 30 40 50 60
j 500
500 504 508 512 516 520
8
Cont.
• Subtraction of a number from a pointer
*k 504 *j 516
520
0 1 2 3 4 5
10 20 30 40 50 60
500 504 508 512 516 520
9
Points to remember
• Array elements are always stored in
contiguous memory locations.
• A pointer when incremented always points to
an immediately next location of its type
• A pointer when decremented always points to
the immediate previous location of its type
• Comparison between pointers can test for
either equality or inequality
10