Wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Pointers V2

Total questions: 15

Worksheet time: 3hrs 30mins

Name
Class
Date
1.

Τι θα τυπώσει το παρακάτω πρόγραμμα;

int arr[] = {1, 2, 3, 4};

int *ptr = arr;

printf("%d", *(ptr + 2));

a)

1

b)

2

c)

3

d)

4

2.

Ποιο είναι το αποτέλεσμα του παρακάτω κώδικα;

char str[] = "Hello";

char *ptr = str;

printf("%c", *(ptr + 1));

a)

H

b)

e

c)

l

d)

διεύθυνση

3.

Ποιο είναι το αποτέλεσμα του παρακάτω προγράμματος;

int arr[2][2] = {{1, 2}, {3, 4}};

int *ptr = &arr[0][0];

printf("%d", * (ptr + 3));

a)

Σφάλμα

b)

2

c)

3

d)

4

4.

Τι κάνει η έκφραση *(str + i) για μια συμβολοσειρά str;

a)

Επιστρέφει το μέγεθος της συμβολοσειράς σε bytes.

b)

Υπολογίζει το μήκος της συμβολοσειράς.

c)

Επιστρέφει τη διεύθυνση του i-οστού χαρακτήρα της συμβολοσειράς.

d)

Επιστρέφει τον i-οστό χαρακτήρα της συμβολοσειράς

5.

Ποιο είναι το αποτέλεσμα του παρακάτω κώδικα;
char str[] = "Array";

char *ptr = &str[3];

printf("%s", ptr);

a)

r

b)

ay

c)

ray

d)

A

6.

Τι θα τυπώσει το παρακάτω πρόγραμμα;

char str[] = "Strings";

char *ptr1 = str;

char *ptr2 = str + 4;

printf("%ld", ptr2 - ptr1);

a)

4

b)

S

c)

n

d)

2

7.

Ποιο θα είναι το αποτέλεσμα του παρακάτω κώδικα;

char arr[][10] = {"One", "Two", "Three"};

char *ptr = arr[2];

printf("%c", *(ptr + 1));

a)

Three

b)

h

c)

One

d)

W

8.

Τι θα τυπώσει το παρακάτω πρόγραμμα;

int arr[] = {0, 2, 4, 8, 16, 32, 64};

int *ptr = arr;

printf("%p\n", (ptr + 12*3));

a)

16

b)

0

c)

διεύθυνση

d)

Σφάλμα

9.

Τι θα τυπώσει το παρακάτω πρόγραμμα;

int x = 10;

int *p = &x;

int **ptr = &p;

**ptr = 20;

printf("%d\n", x);

a)

10

b)

Σφάλμα

c)

διεύθυνση

d)

20

10.

Ποια είναι η διαφορά μεταξύ pointer σε pointer (int **ptr) και απλού pointer (int *ptr);

a)

Το int *ptr δείχνει σε μια τιμή, ενώ το int **ptr δείχνει σε έναν άλλο pointer

b)

Το int **ptr δείχνει πάντα σε πίνακες, ενώ το int *ptr δείχνει σε μεταβλητές.

c)

Το int *ptr μπορεί να τροποποιήσει μόνο τιμές, ενώ το int **ptr μπορεί να τροποποιήσει pointers.

d)

Δεν υπάρχει διαφορά, είναι δύο τρόποι αναφοράς σε pointers

11.

Ποια είναι η έξοδος του παρακάτω προγράμματος;

int arr[] = {2, 4, 6, 8};

int *ptr = arr + 1;

printf("%d", *ptr + *(ptr + 2));

a)

6

b)

8

c)

12

d)

14

12.

Τι θα συμβεί αν προσπαθήσουμε να αποαναφέρουμε έναν NULL pointer με διπλό pointer;

a)

Το πρόγραμμα θα εκτελέσει κανονικά

b)

Θα προκληθεί σφάλμα μεταγλώττισης

c)

Θα προκληθεί σφάλμα εκτέλεσης (segmentation fault)

d)

Θα αποδώσει την τιμή 0

13.

Ποιο είναι το αποτέλεσμα του παρακάτω κώδικα;

char* arr[10] = {"Geek", "Geeks", "Geekfor"};

printf("%s\n", *(arr + 2));

a)

e

b)

"Geeks"

c)

"Geekfor"

d)

G

14.

Τι επιστρέφει η έκφραση &arr[2] στον παρακάτω κώδικα;

int arr[] = {1, 2, 3, 4};

a)

Την τιμή 3

b)

Τη διεύθυνση του τρίτου στοιχείου του πίνακα

c)

Τη διεύθυνση του δεύτερου στοιχείου του πίνακα

d)

Την τιμή 2

15.

Τι θα εμφανίσει ο παρακάτω κώδικας;

int a = 7, b = 9;

int *p = &a;

int **q = &p;

*p = b;

printf("%d %d", a, **q);

a)

7 7

b)

9 7

c)

7 9

d)

9 9