#include <stdio.h>
#include <string.h>
int main()
{
char *p;
char str[10],name_first[10];
int i,count;
printf("\nName before reversing the string:::::::::::::");
scanf("%s",&name_first);
// I have taken a name in name_variable and now i want to reverse it
// using pointer for ex
count = strlen(name_first);
p=str+strlen(name_first)-1;
for(i=0;i<count;i++)
{
*(p-i)=*(name_first+i);
}
// now I am getting a reverse of string as a o/p but I want to know
// how p is pointing to the str as I'm not assigning any address,
// is it done automatically by the compiler?
printf("\nname after reversing the string::::::::::::::%s\n",str);
}
Répondre
En fait, vous attribuez l'adresse à p
dans la ligne de code suivante.
p=str+strlen(name_first)-1;
str
est un tableau si nom du tableau conserve l'adresse de base. Maintenant, en ajoutant la longueur du tableau name_first
et en soustrayant 1
le pointeur arithmétique d'où vous obtenez le résultat.
Vous avez créé une variable count = strlen(name_first)
.
Il n'est donc pas nécessaire d'appeler à nouveau strlen
pour affecter l'adresse à p
.
Pour moyen plus rapide, utilisez
p=str+count-1;
merci ton homme bien illustré ..... –
@pravinkumar: Si vous êtes satisfait de la réponse, vous pouvez upvote et accepter la réponse – Omkant
La déclaration:
p=str+strlen(name_first)-1;
attribue à p une adresse dans la mémoire pointée par str. Donc, disons que str commence à l'adresse 0x1000 et a une longueur de 10 et votre name_first a une longueur de 5. Puis p pointe sur 0x1004. Lorsque vous exécutez la boucle, vous mettez à jour les caractères 0x1004, 0x1003, 0x1002, 0x1001 et 0x1000, mettant ainsi à jour le contenu de str.
Espérons que cela clarifie votre doute. Str est le pointeur du premier élément de str [10]
got ur point too –
Dans cette déclaration: "p = str + strlen (name_first) -1;" rhs est une adresse
p, le pointeur vers un caractère, se voit attribuer l'adresse du dernier caractère dans la chaîne de caractères str dans votre p = ligne. Vous allez ensuite utiliser ce pointeur pour manipuler des caractères dans ce bloc de mémoire et les imprimer en manipulant le contenu de la mémoire (parce que str est en fait juste un pointeur vers le tableau char).
- 1. Je veux savoir sur le MKMapView?
- 2. Comment attendre Snackbar? Je veux savoir quand il est fermé
- 3. Je veux savoir si cette méthode de requête est possible?
- 4. Je veux savoir comment ajouter des éléments à un arraylist
- 5. Je veux savoir sur OpenGL dans Android. Je veux l'apprendre.
- 6. Je veux tout savoir sur les encodages
- 7. Faut-il utiliser p (..) ou (* p) (..) quand p est un pointeur de fonction?
- 8. Comment free() 'savoir' que le pointeur passé est valide?
- 9. Je veux savoir sur le langage de modèle de blogueur
- 10. Je veux savoir le HTTPSConnection redirigé vers quelle URL?
- 11. Je veux savoir comment faire de ce .live() dans jquery
- 12. PHP - Je veux savoir comment obtenir la fonction de trace
- 13. Je veux savoir comment "remplir" les Tstings définis dans CollectLangString?
- 14. Je veux savoir quand le navigateur « viewport » redimensionne
- 15. je veux savoir sur le code du fichier .exe qui est dans l'invite de commande
- 16. Je veux savoir comment faire des objets personnalisés pour iPhone?
- 17. Je veux supprimer un db SQL. Comment puis-je savoir s'il est utilisé?
- 18. Je veux savoir comment répéter un processus en python?
- 19. je veux le code .htaccess savoir si php est installé sur le serveur
- 20. je veux savoir quelle version CLR .net mon application utilise
- 21. Comment savoir quel type de marshall utiliser P/Invoke?
- 22. fonction de mise à jour de SQL, savoir quelle cellule je veux, comment trouver la ligne
- 23. Je veux savoir le flux complet de comment snort traite un paquet?
- 24. Comment calculer le coût de raccordement? Je veux savoir les opérations de disque?
- 25. Quel est le comportement du spécificateur de conversion `p` avec le pointeur` NULL`?
- 26. Le pointeur ne peut même pas être défini sur NULL lorsque je veux le supprimer
- 27. Je veux savoir comment je peux lire l'état de mes preferences.xml checkbox en utilisant appcelerator titanium
- 28. je veux savoir ssl travaille ou pas dans magento
- 29. Est-ce que cette chaîne est Base64? Comment puis-je savoir quel est le codage utilisé?
- 30. Je veux juste savoir quel type de tableau est-ce en javascript?
'p = str + strlen (nom_first) -1;' cette ligne affecte l'adresse de 'str', compensée par' strlen ... 'etc. quantité de' sizeof (char) 'à' p' – nhahtdh