|
Bas de page | |
---|---|
Auteur | Sujet : modifier un char * |
Publicité | Posté le 28-09-2017 à 01:47:30 |
rat de combat attention rongeur méchant! |
"blabla" est une constante, donc effectivement tu peux pas modifier.
ldc? Donne un exemple pour que ce soit clair (code le plus court possible mais complet et qu'on peut compiler/exécuter). |
nanataw |
Message cité 1 fois Message édité par nanataw le 29-09-2017 à 01:08:40 |
rat de combat attention rongeur méchant! | (edit: connerie )
Message cité 1 fois Message édité par rat de combat le 29-09-2017 à 16:46:43 |
nanataw |
|
rat de combat attention rongeur méchant! |
Je devrais vraiment pas poster à 1h du mat'. J'avais pas mis d'argument, avec argument ça marche. Et en tout cas en C99 on peut modifier les arguments à priori: https://stackoverflow.com/questions [...] modifiable
|
nanataw |
|
rat de combat attention rongeur méchant! | Pour répondre à tes questions, en espérant ne pas me tromper cette fois...
Non. Tu peux modifier toute chaîne de caractère ("string" ) qui n'est pas un "literal", autrement dit constant (ou déclaré comme tel). La différence entre char* et char[] c'est que c'est pas la même chose: char* est un pointeur, tu réserves donc de la place en mémoire pour y placer une adresse, mais pas de place pour mettre des chars (caractères). Avec char x[42] tu réserves au contraire de la mémoire à une adresse qui sera placée dans x. x est un tableau mais peut devenir un pointeur (quand on le passe comme argument à une fonction p.ex.). Si je passe x à une fonction je "reçois" un char* - mais je peux bien sûr modifier la chaîne de caractère vers laquelle pointe x!
|
rat de combat attention rongeur méchant! |
Voir ma réponse juste au dessus. Il ne faut pas se fixer sur char* et char[]. Les arguments du programme ne sont pas considérés comme des "literal", donc on peut (à priori, cf lien avec la citation du standard C99) les modifier. Certes tu as un char* (qui en soit est un pointeur qui ne "réserve" pas de place pour des chars en mémoire) pour les arguments mais il y a bien de la place mémoire réservée quelque part et qui contient les arguments, c'est automatique quand on lance le programme (et ton char* pointe vers cet espace mémoire). (Sachant que on a en fait un double pointeur pour argc ou un tableau de pointeurs si on veut, car on a / peut avoir plusieurs arguments.) Message cité 1 fois Message édité par rat de combat le 29-09-2017 à 17:22:27 |
nanataw |
|