Articles of pointeurs

Quelle est la bonne utilisation de printf pour afficher des pointeurs avec des 0

En C, j’aimerais utiliser printf pour afficher les pointeurs, et pour qu’ils s’alignent correctement, j’aimerais les append à 0. Je pense que la bonne façon de faire était de: printf (“% 016p”, ptr); Cela fonctionne, mais ce gcc se plaint avec le message suivant: avertissement: indicateur ‘0’ utilisé avec le format ‘% p’ ​​gnu_printf J’ai […]

Comment imprimer des adresses variables en C?

Lorsque je lance ce code. #include void moo(int a, int *b); int main() { int x; int *y; x = 1; y = &x; printf(“Address of x = %d, value of x = %d\n”, &x, x); printf(“Address of y = &d, value of y = %d, value of *y = %d\n”, &y, y, *y); moo(9, […]

Comment convertir const char * en char * en C?

Dans mon projet, il y a une méthode qui ne retourne qu’un const char* , alors que j’ai besoin d’une chaîne de caractères car l’API n’accepte pas les const char* . Une idée de comment convertir entre const char* en char* ?

Utilise plusieurs niveaux de déréférencement de pointeur?

Quand est-ce que l’utilisation de pointeurs dans n’importe quelle langue exige que quelqu’un utilise plus d’un, disons un sortingple pointeur. Quand est-il judicieux d’utiliser un sortingple pointeur au lieu d’utiliser un simple pointeur? Par exemple: char * * *ptr; au lieu de char *ptr;

Pourquoi int pointer ‘++’ s’incrémente-t-il de 4 plutôt que de 1?

La valeur d’un pointeur est l’adresse d’une variable. Pourquoi la valeur d’un int pointer augmenté de 4 octets après l’augmentation du pointeur int de 1. À mon avis, je pense que la valeur du pointeur (adresse de la variable) augmente seulement d’un octet après l’incrémentation du pointeur. Code de test: int a = 1, *ptr; […]

Comment puis-je créer une fonction qui renvoie une fonction?

Big picture: J’ai un module avec des fonctions et un module avec des procédures et des fonctions sur ces fonctions. Lorsque je combine deux fonctions (à partir de l’interface du module de la fonction): double f1(double alpha, double x); double f2(double beta, double x); À plusieurs égards (l’un d’eux ajoute): double OP_Addition(double (*f)(double,double) , double […]

Que se passe-t-il dans le système d’exploitation lorsque nous déréférencons un pointeur NULL dans C?

Disons qu’il y a un pointeur et que nous l’initialisons avec NULL. int* ptr = NULL; *ptr = 10; Maintenant, le programme se ptr car ptr ne pointe vers aucune adresse et nous lui atsortingbuons une valeur, qui est un access non valide. Donc, la question est: qu’est-ce qui se passe en interne dans le […]

Qu’est-ce que `((void (*) ()) 0x1000) ();` signifie?

Voici un code qui a pour but de définir le compteur du programme pour qu’il saute à l’adresse 0x1000 . Je sais ce que ça fait mais je ne comprends pas comment. C’est lié à mon manque de connaissance du langage C. Peut-être que vous pouvez m’éclairer. Voici la déclaration / fonction (je ne sais […]

Pourquoi cette arithmétique de pointeur n’est-elle pas autorisée dans C?

char arr[] = “Hello”; arr = arr + 1; // error occurs Autant que je sache, une expression qui a un type de tableau est convertie en type de pointeur qui pointe vers l’élément initial du tableau. Par conséquent, j’attendais arr = arr + 1 (le pointeur sur le premier élément (arr) du tableau devient […]

Pour la boucle avec le pointeur dans C

Je ne comprends pas ce que fait un pointeur dans la boucle for . Que fait le *p dans la boucle suivante? char str[128] = “Some Text”; char *p; for (p = str; *p /*what does this mean?*/; p++) { // Code } Je comprends le rest, mais pourquoi *p n’est-il pas comme p > […]