Program 1
1 2 3 4 5 6 7 8 9 10 |
#include<stdio.h> main() { int a[2][2][2] = { {10,2,3,4}, {5,6,7,8}}; int *p, *q; p = & a[2][2][2]; *q = ***a; printf("%d----%d", *p,*q); } |
Program 2
1 2 3 4 5 6 7 8 |
void main() { printf("sizeof(void *) = %d", sizeof(void *)); printf("sizeof(int *) = %d", sizeof(int *)); printf("sizeof(double *) = %d", sizeof(double *)); printf("sizeof(struct unknown*) = %d", sizeof(struct unknown*)); // Presupunem ca platforma e pe 16 biti } |
Program 3
1 2 3 4 5 6 7 |
#include <stdio.h> #define a 10 main() { #define a 50 printf("%d", a); } |
PROGRAM 1:
*q = ***q; // neclaritate
p = & a[2][2][2]; // variabila p pointeaza spre elementul
// matricii a cu valoarea numerica 8
PROGRAM 2:
sizeof(void *) = 2sizeof(int *) = 2sizeof(double *) = 2sizeof(struct unknown) = 0
PROGRAM 3:
50
functia main() returneaza int, tu nu ai returnat nimic
PROGRAM1:
“p” va avea valoarea 8, insa nu se va afisa nimic, deoarece lui q i se atribuie valoare fara a se aloca memorie. Era corect daca se facea astfel: q = **a;
PROGRAM2:
sizeof(void *) = 2sizeof(int *) = 2sizeof(double *) = 2sizeof(struct unknown*) = 2
Pointerul spre orice tip, ocupa aceeasi marime de memorie
PROGRAM3:
50