WorksheetsPointers V2
Total questions: 15
Worksheet time: 3hrs 30mins
Τι θα τυπώσει το παρακάτω πρόγραμμα;
int arr[] = {1, 2, 3, 4};
int *ptr = arr;
printf("%d", *(ptr + 2));
1
2
3
4
Ποιο είναι το αποτέλεσμα του παρακάτω κώδικα;
char str[] = "Hello";
char *ptr = str;
printf("%c", *(ptr + 1));
H
e
l
διεύθυνση
Ποιο είναι το αποτέλεσμα του παρακάτω προγράμματος;
int arr[2][2] = {{1, 2}, {3, 4}};
int *ptr = &arr[0][0];
printf("%d", * (ptr + 3));
Σφάλμα
2
3
4
Τι κάνει η έκφραση *(str + i) για μια συμβολοσειρά str;
Επιστρέφει το μέγεθος της συμβολοσειράς σε bytes.
Υπολογίζει το μήκος της συμβολοσειράς.
Επιστρέφει τη διεύθυνση του i-οστού χαρακτήρα της συμβολοσειράς.
Επιστρέφει τον i-οστό χαρακτήρα της συμβολοσειράς
Ποιο είναι το αποτέλεσμα του παρακάτω κώδικα;
char str[] = "Array";
char *ptr = &str[3];
printf("%s", ptr);
r
ay
ray
A
Τι θα τυπώσει το παρακάτω πρόγραμμα;
char str[] = "Strings";
char *ptr1 = str;
char *ptr2 = str + 4;
printf("%ld", ptr2 - ptr1);
4
S
n
2
Ποιο θα είναι το αποτέλεσμα του παρακάτω κώδικα;
char arr[][10] = {"One", "Two", "Three"};
char *ptr = arr[2];
printf("%c", *(ptr + 1));
Three
h
One
W
Τι θα τυπώσει το παρακάτω πρόγραμμα;
int arr[] = {0, 2, 4, 8, 16, 32, 64};
int *ptr = arr;
printf("%p\n", (ptr + 12*3));
16
0
διεύθυνση
Σφάλμα
Τι θα τυπώσει το παρακάτω πρόγραμμα;
int x = 10;
int *p = &x;
int **ptr = &p;
**ptr = 20;
printf("%d\n", x);
10
Σφάλμα
διεύθυνση
20
Ποια είναι η διαφορά μεταξύ pointer σε pointer (int **ptr) και απλού pointer (int *ptr);
Το int *ptr δείχνει σε μια τιμή, ενώ το int **ptr δείχνει σε έναν άλλο pointer
Το int **ptr δείχνει πάντα σε πίνακες, ενώ το int *ptr δείχνει σε μεταβλητές.
Το int *ptr μπορεί να τροποποιήσει μόνο τιμές, ενώ το int **ptr μπορεί να τροποποιήσει pointers.
Δεν υπάρχει διαφορά, είναι δύο τρόποι αναφοράς σε pointers
Ποια είναι η έξοδος του παρακάτω προγράμματος;
int arr[] = {2, 4, 6, 8};
int *ptr = arr + 1;
printf("%d", *ptr + *(ptr + 2));
6
8
12
14
Τι θα συμβεί αν προσπαθήσουμε να αποαναφέρουμε έναν NULL pointer με διπλό pointer;
Το πρόγραμμα θα εκτελέσει κανονικά
Θα προκληθεί σφάλμα μεταγλώττισης
Θα προκληθεί σφάλμα εκτέλεσης (segmentation fault)
Θα αποδώσει την τιμή 0
Ποιο είναι το αποτέλεσμα του παρακάτω κώδικα;
char* arr[10] = {"Geek", "Geeks", "Geekfor"};
printf("%s\n", *(arr + 2));
e
"Geeks"
"Geekfor"
G
Τι επιστρέφει η έκφραση &arr[2] στον παρακάτω κώδικα;
int arr[] = {1, 2, 3, 4};
Την τιμή 3
Τη διεύθυνση του τρίτου στοιχείου του πίνακα
Τη διεύθυνση του δεύτερου στοιχείου του πίνακα
Την τιμή 2
Τι θα εμφανίσει ο παρακάτω κώδικας;
int a = 7, b = 9;
int *p = &a;
int **q = &p;
*p = b;
printf("%d %d", a, **q);
7 7
9 7
7 9
9 9
