Articles of pointeurs

Échange de pointeurs en C (char, int)

J’ai eu du mal à comprendre les différents comportements lorsque j’échange des pointeurs en C. Si je veux échanger deux pointeurs int , je peux le faire. void intSwap (int *pa, int *pb){ int temp = *pa; *pa = *pb; *pb = temp; } Cependant, si je veux échanger deux pointeurs de caractère, je dois […]

Les pointeurs a, & a, * a, a , & a et & a sont-elles identiques?

J’ai le programme C suivant: #include int main(){ int a[2][2] = {1, 2, 3, 4}; printf(“a:%p, &a:%p, *a:%p \n”, a, &a, *a); printf(“a[0]:%p, &a[0]:%p \n”, a[0], &a[0]); printf(“&a[0][0]:%p \n”, &a[0][0]); return 0; } Il donne la sortie suivante: a:0028FEAC, &a:0028FEAC, *a:0028FEAC a[0]:0028FEAC, &a[0]:0028FEAC &a[0][0]:0028FEAC Je ne suis pas capable de comprendre pourquoi sont &a , […]

Fuite de mémoire d’un pointeur à l’autre

J’utilise l’algorithme de Dijkstra avec liste d’adjacence dans cette page Web . Puisque je veux construire différents graphiques et calculer plusieurs fois les chemins les plus courts, j’ajoute une commande “libre” pour libérer la mémoire. Cependant, l’utilisation de la mémoire continue d’augmenter après de nombreuses itérations Voici mon code modifié: // C / C++ program […]

C – pointeurs lorsque de nouvelles fonctions sont appelées

Dis que j’ai quelque chose comme: function2(int *hello) { //something } function1(int *hello) { function2(&hello); } void main() { int hello = 0; function1(&hello); } Comment puis-je faire en sorte que function2 puisse changer la valeur d’origine déclarée dans main ?

L’initialisation de la structure ne fonctionne pas avec malloc

J’ai une petite expérience en C que j’essaie de comprendre et j’ai rencontré quelque chose que je ne peux pas expliquer. Disons que j’ai la structure suivante: struct World { Things* things; }; et les fonctions suivantes: void initWorld(World *world); void addThingToWorld(World *world, Thing *thing); Maintenant, selon l’implémentation d’ initWorld et la manière dont je […]

Quels arguments l’opérateur sizeof prend-il en C?

[ Titre original faisant référence à ‘sizeof function’. ] J’ai essayé ceux-ci et ils ont tous travaillé: char * p; printf (“La taille de * p est% d \ n”, sizeof (* p)); // résultat = 1 printf (“La taille de p est% d \ n”, sizeof (p)); // résultat = 4 printf (“La taille […]

C – Si realloc est utilisé, est-il gratuit et gratuit?

Lors de l’utilisation de realloc, la mémoire est-elle automatiquement libérée? Ou est-il nécessaire d’utiliser free avec realloc? Lequel des énoncés suivants est correct? //Situation A ptr1 = realloc(ptr1, 3 * sizeof(int)); //Situation B ptr1 = realloc(ptr2, 3 * sizeof(int)); free(ptr1); ptr1 = ptr2;

Comment utiliser `offsetof` pour accéder à un champ de manière conforme aux normes?

Supposons que j’ai une structure et que j’extrais l’offset à un membre: struct A { int x; }; size_t xoff = offsetof(A, x); comment puis-je, en donnant un pointeur à struct A extraire le membre d’une manière conforme standard? En supposant bien sûr que nous avons une struct A* correcte struct A* et un offset […]

Tableau 2D passant à une fonction

J’ai lu cette question mais je ne parviens pas à obtenir le code résultant pour résoudre le problème. Comment devrais-je changer cela afin de le faire fonctionner? void print2(int ** array,int n, int m); main() { int array[][4]={{1,2,3,4},{5,6,7,8}}; int array2[][2]={{1,2},{3,4},{5,6},{7,8}}; print2(array,2,4); } void print2(int ** array,int n,int m) { int i,j; for(i=0;i<n;i++) { for(j=0;j<m;j++) printf("%d […]

Utilisation d’une variable scalaire ou d’un pointeur pour imprimer un tableau 2D

Comment utiliser une variable scalaire ou un pointeur pour imprimer un tableau de chaînes 2D? Le programme doit exécuter la commande système «echo» pour imprimer toutes les chaînes. Consortingbution: char myarray[2][10] = {“Hello”, “World”}; for (j=0;j<2;j++){ setenv ("myvar", myarray[j]); system("echo $myvar"); } Sortie réelle: Hello World Production attendue: Hello World