Articles of pointeurs

modèles d’emplacement de mémoire sur stack et tas

Je suis juste curieux de savoir s’il existe une corrélation entre la longueur de l’adresse d’une variable (pointeur) sur stack et tas. À de nombreuses resockets, j’ai constaté que les variables de stack sont généralement plus longues que les tas. Par exemple, considérons le test simple suivant: #include #include int main(void) { int i = […]

Comment la destination vers laquelle un pointeur non initialisé en c pointe-t-elle est-elle déterminée?

Je sais que si un pointeur est déclaré en C (et non initialisé), il se dirigera vers une adresse mémoire “aléatoire” pouvant contenir n’importe quoi. Comment est-ce que cela pointe réellement? Ce n’est probablement pas vraiment aléatoire, car ce serait inefficace et illogique.

Erreur de segmentation de l’atsortingbution char *

J’essayais de comprendre l’erreur de segmentation pour l’affectation car * pendant le programme suivant pour à l’emplacement * p = ‘Z’ void main() { char *p =”abcdefg”; *p = ‘Z’; } Lorsque Google a cherché, j’ai trouvé de nombreux liens vers des réponses, comme suit: 1. Il s’agit d’un littéral de chaîne dont la valeur […]

double pointeur vs simple pointeur

Quelqu’un peut-il expliquer / expliquer pourquoi la valeur de la variable i dans la fonction principale dans l’extrait de code ci-dessous ne change pas via la fonction test1 alors qu’elle change via test2? Je pense qu’un seul pointeur devrait être suffisant pour changer la valeur de i. Pourquoi sums-nous censés utiliser le double pointeur? #include […]

Pointeurs avec tableau à deux dimensions

S’il vous plaît examiner le morceau de code suivant #include #define ROW_SIZE 2 #define COL_SIZE 2 int main() { int a[ROW_SIZE][COL_SIZE]={{1,2},{3,4}}; // Base address:Pointer to the first element a 1D array printf(“Base address of array:%p\n”,a); //The value at the base address: should be the address of 1st 1D array printf(“Value at the Base address:%p\n”,*a); return […]

Comprendre le code dans l’implémentation de strlen

J’ai deux questions concernant l’implémentation de strlen dans ssortingng.h dans glibc. L’implémentation utilise un nombre magique avec des “trous”. Je ne suis pas capable de comprendre comment cela fonctionne. Quelqu’un peut-il m’aider s’il vous plaît à comprendre cet extrait: size_t strlen (const char *str) { const char *char_ptr; const unsigned long int *longword_ptr; unsigned long […]

La différence entre char * et char

J’ai lu tellement de sujets et de questions à ce sujet et lu beaucoup de réponses, mais j’ai quand même du mal à comprendre les différences et quand utiliser quoi? Je pense que vous devriez utiliser char * lorsque vous avez besoin de stocker des données et que vous n’en connaissez pas la taille car […]

Initialisation d’un tableau de pointeur entier en C

J’ai quelques confusions / problèmes sur l’utilisation des pointeurs en C. J’ai mis l’exemple de code ci-dessous pour le comprendre facilement. Veuillez noter les différences entre ces codes. Si vous avez un problème pour le comprendre, merci de nous faire part de vos commentaires. Ça ne marche pas. #include #include void process() { int *arr; […]

Affectation de pointeurs flottants en C

Ce que je possède actuellement est une fonction simple qui, fondamentalement, réaffecte les pointeurs en fonction du pointeur de paramètre, mais je reçois une erreur indiquant que j’utilise l’une des variables non initialisée. Voici ce que j’ai et l’erreur est renvoyée sur la ligne * x = * k; float * program(const int *k) { […]

La valeur de «tableau multidimensionnel pointeur +1» ne correspond pas

Voici le programme du problème: #include int main() { int apricot[2][3][5]; int (*r)[5]=apricot[0]; int *t=apricot[0][0]; printf(“%p\n%p\n%p\n%p\n”,r,r+1,t,t+1); } Le résultat est: # ./a.out 0xbfa44000 0xbfa44014 0xbfa44000 0xbfa44004 Je pense que la valeur de la dimension de t devrait être 5 car t est la dernière dimension, et le fait est corrélé (0xbfa44004-0xbfa44000 + 1 = 5) […]