Vous êtes sur la page 1sur 61

# Introduction

Week 03 – Tutorial 01
C Language: Pointers, Arrays & Structures

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 1

Goal: programming skills
• Able to understand, create and use
– arrays
– pointers

Arrays
int  mark[100];

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 3

Array initialisation
int    id[7] = {1, 2, 3, 4, 5, 6, 7};
float  x[5] = {5.6, 5.7, 5.8, 5.9, 6.1};
char   vowel[6] = {'a', 'e', 'i', 'o', 'u', '\0'};

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 4

Arrays and functions
array by using:
• A pointer.
• A sized array (dimension is explicitly
stated), e.g. s[20] or
• An unsized array (dimension is not
stated), e.g. p[ ].

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 5

Code
Call a function f with:
– A pointer.
– A sized array (dimension is explicitly stated),
e.g. s[20] or
– An unsized array (dimension is not stated),
e.g. p[ ].

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 6

Multidimensional arrays
int x[3][4];
float matrix[20][25];

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 7

Order of elements in memory
• All multidimensional arrays are stored in
linear order row by row:

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 8

Exercise*
• Calculate address of the last element of
the array.
• Input:
– int arr[3][3][3][3][3][3][3][3],
• Find the address of the last element of
the array.

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 9

• Today we try this service:
– socrative.com
– go to room: OS211
– https://api.socrative.com/rc/pdbBUr
– wait a bit…

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 10

Pointers
data or values are called pointers.

int i, *p;

## i = 60; // storing an integer value

p = &i // storing an address of an integer variable

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 11

Pointers Practice
Remember that &i will give the address of variable i. Build and run the following program,
show the output and answer the question.

#include <stdio.h>

void main(void)
{
int i = 7, j = 11;
printf("i = %d, j = %d\n", i, j);
printf("&i = %p, &j = %p\n", &i, &j);
}

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 12

Pointers Practice
Remember that &i will give the address of variable i. Build and run the following program,
show the output and answer the question.

#include <stdio.h>

void main(void)
{
int i = 7, j = 11;
printf("i = %d, j = %d\n", i, j);
printf("&i = %p, &j = %p\n", &i, &j);
}

For 32 bits system the 0012FF60 hexadecimal will be converted to 32 bits binary

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 13

Pointer Arithmetic
int *p, j[ ] = {2, 6, 3, 7, 4};

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 14

Pointer Arithmetic Example
#include <stdio.h>

int main()
{
int a[10] = {1 ,2 ,5 ,3 , 1, -3};
double b[20] = {4, 3, 2.0, 2.5, -15.66};
int i;

## for (i = 0; i < sizeof(a) / sizeof(int); i++)

{
printf("%d ", *(a+i));
}

## for (i = 0; i < sizeof(b) / sizeof(double); i++)

{
printf("%f ", *(b+i));
}

return 0;
} Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 15
Code
Build and run the following program, show the output and answer the questions.

#include <stdio.h>

void main(void)
{
int i = 7, j = 11;
printf("i = %d, j = %d\n", i, j);
printf("&i = %p, &j = %p\n", &i, &j);
// reassign new values...
i = 4;
j = 5;
// reprint...
printf("\ni = %d, j = %d\n", i, j);
printf("&i = %p, &j = %p\n", &i, &j);
}

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 16

Questions
a) After the initialization statement, were we able to
change the values of the variables?

## b) After the assignment statements, were we able to

change the addresses of the variables? Try &i = 4;

## c) Now at the end of main(), add the following statement

and try running it: j = &i; Were we able to store the

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 17

• Today we try this service:
– socrative.com
– go to room: OS211
– https://api.socrative.com/rc/pdbBUr
– wait a bit…

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 18

Exercise On Pointers 1
[1] int a, b, c, *d, *e, *f=&a, *g=&c;
[2] a = 5;
[3] b = 4;
[4] d = &c;
[5] e = &a;
[6] g = 7;
[7] *d = *d + *e + 1;
[8] g++;
[9] (*f)++;
[10] int h, *k, *j=&h;
[11] h = 10;
[12] (*j)++;
[13] b = *f + g + h;
[14] (*f)++;
[15] *d = a + *j;
[16] *k = 13;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 19

Exercise On Pointers 1 [1]

## Stack after execution of

[1] int a, b, c, *d, *e, *f=&a, *g=&c;
Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 20
Exercise On Pointers 1
[1] int a, b, c, *d, *e, *f=&a, *g=&c;
[2] a = 5;
[3] b = 4;
[4] d = &c;
[5] e = &a;
[6] g = 7;
[7] *d = *d + *e + 1;
[8] g++;
[9] (*f)++;
[10] int h, *k, *j=&h;
[11] h = 10;
[12] (*j)++;
[13] b = *f + g + h;
[14] (*f)++;
[15] *d = a + *j;
[16] *k = 13;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 21

Exercise On Pointers 1
[1] int a, b, c, *d, *e, *f=&a, *g=&c;
[2] a = 5;
[3] b = 4;
[4] d = &c;
[5] e = &a;
[6] g = 7;
[7] *d = *d + *e + 1;
[8] g++;
[9] (*f)++;
[10] int h, *k, *j=&h;
[11] h = 10;
[12] (*j)++;
[13] b = *f + g + h;
[14] (*f)++;
[15] *d = a + *j;
[16] *k = 13;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 22

Exercise On Pointers 1
[1] int a, b, c, *d, *e, *f=&a, *g=&c;
[2] a = 5;
[3] b = 4;
[4] d = &c;
[5] e = &a;
[6] g = 7;
[7] *d = *d + *e + 1;
[8] g++;
[9] (*f)++;
[10] int h, *k, *j=&h;
[11] h = 10;
[12] (*j)++;
[13] b = *f + g + h;
[14] (*f)++;
[15] *d = a + *j;
[16] *k = 13;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 23

Exercise On Pointers 1
[1] int a, b, c, *d, *e, *f=&a, *g=&c;
[2] a = 5;
[3] b = 4;
[4] d = &c;
[5] e = &a;
[6] g = 7;
[7] *d = *d + *e + 1;
[8] g++;
[9] (*f)++;
[10] int h, *k, *j=&h;
[11] h = 10;
[12] (*j)++;
[13] b = *f + g + h;
[14] (*f)++;
[15] *d = a + *j;
[16] *k = 13;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 24

Exercise On Pointers 1
[1] int a, b, c, *d, *e, *f=&a, *g=&c;
[2] a = 5;
[3] b = 4;
[4] d = &c;
[5] e = &a;
[6] g = 7;
[7] *d = *d + *e + 1;
[8] g++;
[9] (*f)++;
[10] int h, *k, *j=&h;
[11] h = 10;
[12] (*j)++;
[13] b = *f + g + h;
[14] (*f)++;
[15] *d = a + *j;
[16] *k = 13;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 25

Exercise On Pointers 1
[1] int a, b, c, *d, *e, *f=&a, *g=&c;
[2] a = 5;
[3] b = 4;
[4] d = &c;
[5] e = &a;
[6] g = 7;
[7] *d = *d + *e + 1;
[8] g++;
[9] (*f)++;
[10] int h, *k, *j=&h;
[11] h = 10;
[12] (*j)++;
[13] b = *f + g + h;
[14] (*f)++;
[15] *d = a + *j;
[16] *k = 13;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 26

Exercise On Pointers 1
[1] int a, b, c, *d, *e, *f=&a, *g=&c;
[2] a = 5;
[3] b = 4;
[4] d = &c;
[5] e = &a;
[6] g = 7;
[7] *d = *d + *e + 1;
[8] g++;
[9] (*f)++;
[10] int h, *k, *j=&h;
[11] h = 10;
[12] (*j)++;
[13] b = *f + g + h;
[14] (*f)++;
[15] *d = a + *j;
[16] *k = 13;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 27

Exercise On Pointers 1
[1] int a, b, c, *d, *e, *f=&a, *g=&c;
[2] a = 5;
[3] b = 4;
[4] d = &c;
[5] e = &a;
[6] g = 7;
[7] *d = *d + *e + 1;
[8] g++;
[9] (*f)++;
[10] int h, *k, *j=&h;
[11] h = 10;
[12] (*j)++;
[13] b = *f + g + h;
[14] (*f)++;
[15] *d = a + *j;
[16] *k = 13;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 28

Exercise On Pointers 1
[1] int a, b, c, *d, *e, *f=&a, *g=&c;
[2] a = 5;
[3] b = 4;
[4] d = &c;
[5] e = &a;
[6] g = 7;
[7] *d = *d + *e + 1;
[8] g++;
[9] (*f)++;
[10] int h, *k, *j=&h;
[11] h = 10;
[12] (*j)++;
[13] b = *f + g + h;
[14] (*f)++;
[15] *d = a + *j;
[16] *k = 13;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 29

Exercise On Pointers 1
[1] int a, b, c, *d, *e, *f=&a, *g=&c;
[2] a = 5;
[3] b = 4;
[4] d = &c;
[5] e = &a;
[6] g = 7;
[7] *d = *d + *e + 1;
[8] g++;
[9] (*f)++;
[10] int h, *k, *j=&h;
[11] h = 10;
[12] (*j)++;
[13] b = *f + g + h;
[14] (*f)++;
[15] *d = a + *j;
[16] *k = 13;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 30

Exercise On Pointers 1
[1] int a, b, c, *d, *e, *f=&a, *g=&c;
[2] a = 5;
[3] b = 4;
[4] d = &c;
[5] e = &a;
[6] g = 7;
[7] *d = *d + *e + 1;
[8] g++;
[9] (*f)++;
[10] int h, *k, *j=&h;
[11] h = 10;
[12] (*j)++;
[13] b = *f + g + h;
[14] (*f)++;
[15] *d = a + *j;
[16] *k = 13;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 31

Exercise On Pointers 1
[1] int a, b, c, *d, *e, *f=&a, *g=&c;
[2] a = 5;
[3] b = 4;
[4] d = &c;
[5] e = &a;
[6] g = 7;
[7] *d = *d + *e + 1;
[8] g++;
[9] (*f)++;
[10] int h, *k, *j=&h;
[11] h = 10;
[12] (*j)++;
[13] b = *f + g + h;
[14] (*f)++; ///// Here we run a quiz
[15] *d = a + *j;
[16] *k = 13;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 32

• Today we try this service:
– socrative.com
– go to room: OS211
– https://api.socrative.com/rc/pdbBUr
– wait a bit…

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 33

Space Race with Pointers
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 34

Space Race with Pointers

## Stack after execution of

[1] int a, *b, c=&a, *d, f, g=&f;
Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 35
• Today we try this service:
– socrative.com
– go to room: OS211
– https://api.socrative.com/rc/pdbBUr
– wait a bit

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 36

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 37

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 38

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 39

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 40

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 41

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 42

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 43

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 44

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 45

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 46

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 47

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 48

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 49

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 50

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 51

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 52

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 53

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 54

Exercise On Pointers 2
[1] int a, *b, c=&a, *d, f, g=&f;
[2] c = 10;
[3] b = 4;
[4] a = a + 1;
[5] f = a + b;
[6] d = malloc(sizeof(int));
[7] *d = 20;
[8] g = g + a;
[9] b = &a;
[10] *b = *d + g;
[11] f++;
[12] d = &f;
[13] b = d;
[14] *b = a + f;
[15] *d = *d + a;
[16] f = a + *b + *d + c;
[17] c++;
[18] b++;
[19] g++;
[20] f = a + b + *d;

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 55

Few typical errors
#include <stdio.h>

int main()
{
int a = 1025;
int *b = a;
*b = 1000;
/*
Segmentation Fault

*/
return 0;
}

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 56

Few typical errors
#include <stdio.h>

int main()
{
int user_input = 0;
scanf("%d", user_input);
printf("%d", user_input);
/*
SegFault.
Halt after scanf
*/
return 0;
}

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 57

Problem 3 / HW
1. How to find the size of an array?
2. Why is it important to initialize an array
beforehand?
3. Is it valid to refer to the ith array element
like this?
*(my_array + i)

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 58

Problem 4 / HW
• Write a program that will contain
definition of a structure representing
complex numbers and will perform some
simple operations on them

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 59

End

Week 03 – Tutorial 01

## Giancarlo Succi. Operating Systems. Innopolis University. Fall 2016. 60

References
• http://www.gdsw.at/languages/c/
programming-bbrown/c_088.htm
• https://en.wikibooks.org/wiki/
C_Programming/
Pointers_and_arrays#Pointers_and_Arrays
• http://www.programiz.com/c-programming/