Initiation d'un pointeur
Fermé
ygj
Messages postés
65
Date d'inscription
dimanche 1 février 2009
Statut
Membre
Dernière intervention
29 décembre 2021
-
Modifié par ygj le 24/01/2015 à 21:49
ygj - 30 janv. 2015 à 17:06
ygj - 30 janv. 2015 à 17:06
A voir également:
- Initiation d'un pointeur
- Pointeur souris disparu windows 10 - Guide
- Pointeur souris - Guide
- Pointeur souris disparu pc portable asus - Guide
- Initiation au logiciel tompro pdf - Forum Réseaux sociaux
- Cours initiation informatique bureautique pdf ✓ - Forum Bureautique
1 réponse
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
24 janv. 2015 à 22:34
24 janv. 2015 à 22:34
void main()
Le bon prototype du main() sans argument est :
Et, cela renvoie 0 :
Pour tes questions :
1 comment ça se fait adresse+longueur dans pointeur?
adresse+longueur permet au pointeur de pointer sur le caractère de son choix (décalage). Dans le cas présent, p contiendra l'adresse du '\0' de ch1. Autrement si tu écris sur *p, tu écraseras le '\0'.
Pour le 2ème point, tu as tout juste.
L'erreur provient de l'allocation. ch1 pointe vers "bon" qui est une zone allouée dans une partie en lecture seule. Pas le droit d'écrire dedans. D'ailleurs, si tu avais le droit, ça ne serait pas bon non plus, puisqu'il n'y a pas la place.
Il faut que tu passes par un tableau suffisamment grand. Par exemple :
Ou alors, si tu veux passer par un pointeur :
Le bon prototype du main() sans argument est :
int main (void)
Et, cela renvoie 0 :
return 0;
Pour tes questions :
1 comment ça se fait adresse+longueur dans pointeur?
adresse+longueur permet au pointeur de pointer sur le caractère de son choix (décalage). Dans le cas présent, p contiendra l'adresse du '\0' de ch1. Autrement si tu écris sur *p, tu écraseras le '\0'.
Pour le 2ème point, tu as tout juste.
L'erreur provient de l'allocation. ch1 pointe vers "bon" qui est une zone allouée dans une partie en lecture seule. Pas le droit d'écrire dedans. D'ailleurs, si tu avais le droit, ça ne serait pas bon non plus, puisqu'il n'y a pas la place.
Il faut que tu passes par un tableau suffisamment grand. Par exemple :
char ch1[20]="bon";au lieu de char *ch1="bon";
Ou alors, si tu veux passer par un pointeur :
char *ch1=malloc(20*sizeof(*ch1)); strcpy(ch1,"bon");
26 janv. 2015 à 19:13
pour l'entête , je suis d'accord avec toi, ce n'est pas standard, mais c'est juste un cours que j ai trouvé sur le net.
une autre question, d'après ta réponse, est ce que cette remarque est valable seulement pour les déclarations de genre ???
26 janv. 2015 à 19:38
ce qu'il faut voir, c'est que ce n'est pas le pointeur qui empêche la modification mais le "..." (exception pour les tableaux)
26 janv. 2015 à 22:07
26 janv. 2015 à 22:15
En revanche, lorsque tu fais char tmp[]="coucou"; le compilateur crée un tableau de 7 cases dans la pile (donc en lecture / écriture) et tmp[0]='c', tmp[1]='o', ...
30 janv. 2015 à 17:06