Exercicis amb C - Apuntadors i structs
Recull de preguntes d’examens i exercicis pràctics per a practicar amb C
Quin serà el resultat d’aquesta execució?
#include<stdio.h> int main(){ int x = 5; int *p; =&x; p++; x("%d\n", *p); printf}
Completa el codi següent:
#include <stdio.h> int main(){ const char *s = ""; char str[] = "Hola"; = str; s while(*s) ("%c", ???); printfreturn 0; }
Analitzeu el següent codi i mostreu el contingut de la memòria durant l’execució del programa.
int main(){ struct pokemon { int id; char* name; }; struct pokemon p1 = {1, "Bulbasaur"}; ("Id: %d\n", p1.id); printf("Name: %s\n", p1.name); printf }
Analitza el codi següent i digues quin és el resultat de la seva execució.
int main(){ char * s = "Hola"; char * t = "Adéu"; char * u; = t; s = strdup(s); u // Nota: strdup retorna un punter a una nova cadena de caràcters que és una còpia exacta de la cadena de caràcters passada com a argument. ("s: %s\n", s); printf("t: %s\n", t); printf("u: %s\n", u); printf}
Analitza el codi següent i digues quin és el resultat de la seva execució.
int main(){ int n = 3; char* noms[n]; char* nom = (char*)malloc(20*sizeof(char)); for(int i = 0; i < n; i++){ ("Introdueix el teu nom: "); printf("%s", nom); scanf[i] = nom; noms} ("Noms introduïts:\n"); printffor(int i = 0; i < n; i++){ ("%s\n", noms[i]); printf} return 0; }
Analitza el codi següent i digues quin és el resultat de la seva execució.
#include <stdio.h> int main() { int k = 5; int *p = &k; int **m = &p; **m = 6; ("%d\n", k); printf}
Completa el codi següent:
#include <stdio.h> int main() { int arr[4] = {1, 2, 3, 4}; // ???? ("Elements of the array using the pointer:\n"); printffor (int i = 0; i < 4; i++) { ("ptr[%d] = %d\n", i, (*ptr)[i]); printf} return 0; }
Quin serà el resultat d’aquesta execució?
#include <stdio.h> int main() { int a[5] = {5,1,15,20,25}; int i,j,m; = ++a[1]; i = a[1]++; j = a[i++]; m ("%d, %d, %d", i, j,m); printfreturn 0; }
Quin serà el resultat?
#include <stdio.h> void foo(int *p) { int j = 22; = &j; p ("%d ", *p); printf} int main() { int i = 17, *p = &i; (&i); foo("%d ", *p); printf}
Quina serà la sortida?
#include <stdio.h> struct p { int x; int y; }; // sizeof(int) == 2 bytes? // sizeof(int) == 4 bytes? int main() { struct p p1[] = { {1, 92}, {3, 94}, {5, 96} }; int x = (sizeof(p1) / 3); ("%ld\n",sizeof(int)); printf if (x == 8) ("true\n"); printfelse ("false\n"); printf}
Completa el codi següent:
int main(){ int (*ptr)(); return 0; }