View Full Version : [c]chiarimento typedef
ciao a tutti
vorrei un chiarimento su queste typedef
typedef int *poly;
typedef poly *der;
Se dichiaro una variabile così
poly p;
avrei dichiarato un puntatore o una semplice variabile?
grazie
FrancoBross
18-01-2011, 20:36
poly è un array di interi
der è un array di poly
quindi la tua risposta è si sono puntatori
ma la dichiarazione "poly p" mi crea un puntatore giusto?
oppure devo comunque scrivere "poly *p"?
FrancoBross
18-01-2011, 23:15
si è un puntatore
grazie
un ultimo chiarimento
questo programmino dovrebbe stampare gli elementi puntati da p
int main() {
int k,i,j;
poly p;
printf("inserisci grado del polinomio\n");
scanf("%d\n",&k);
p=calloc((k+1),sizeof(int));
printf("Inserisci i %d coefficenti\n",k+1);
for (i=0;i<=k;i++)
scanf("%d",&p[i]);
for (j=0;j<=k;j++)
printf("%d\n",p[i]);
free(p);
return 0;
}
però in output mi restituisce per tutti gli elementi il numero "-189720621"
banryu79
19-01-2011, 11:37
però in output mi restituisce per tutti gli elementi il numero "-189720621"
Nell'ultimo ciclo, inizializzi e incrementi 'j' ad ogni iterazione, ma usi 'i' per accedere a 'poly'.
che stupido:muro:
prima l'istruzione stava dentro il primo for e spostandola mi sono dimenticato di cambiare i (che figura di m....)
grazie mille
p.s. Pura curiosità: perchè quando lo eseguo da terminale la seconda printf viene eseguita dopo che ho inserito il primo numero? Vengono tutti memorizzati ma fino a che non digito il primo numero non compare la scritta "inserisci i coefficienti".
FrancoBross
19-01-2011, 15:36
che stupido:muro:
prima l'istruzione stava dentro il primo for e spostandola mi sono dimenticato di cambiare i (che figura di m....)
grazie mille
p.s. Pura curiosità: perchè quando lo eseguo da terminale la seconda printf viene eseguita dopo che ho inserito il primo numero? Vengono tutti memorizzati ma fino a che non digito il primo numero non compare la scritta "inserisci i coefficienti".
non ho capito il problema...pardon la curiosità
in teoria nel terminale dovrebbe comparire questo (con input: k=3 e 1 2 3 4 come coefficienti)
Inserisci grado polinomio
4
inserisci coefficienti
1
2
3
4
1
2
3
4
invece dopo aver inserito il grado del polinomio non compare la seconda scritta ("inserisci coefficienti"). devo inserire il primo coefficiente e dopo di che compare la scritta però nell'array vengono memorizzati tutti. E' solo un difettuccio di forma dato che in realtà devo scrivere solo la funzione(al main ci pensa il professore). Sono solo curioso se dipende dalla malloc o da qualcos'altro. :)
p.s. uso netbeans su windows 7
banryu79
19-01-2011, 16:52
...
printf("inserisci grado del polinomio\n");
scanf("%d\n",&k);
...
prova a togliere quel \n dlla prima scanf...
prova a togliere quel \n dlla prima scanf...
in effetti funziona :D come mai?
banryu79
19-01-2011, 22:31
in effetti funziona :D come mai?
Immagino che quella newline in più veniva passata dalla scanf nel buffer usato per lo standard output, sul quale si appoggia anche la printf per il suo funzionamento.
In pratica era come se con la scanf avessi inserito una riga in più nel buffer, la successiva printf trovando già una riga nel buffer scaricava in output sulla consolle quest'ultima (riga vuota) e memorizzava nel buffer "inserisci coefficienti
\n" che restava in attesa di essere scaricato da una chiamata futura (nel tuo caso un'altra scanf).
Almeno credo :stordita: sono andato a ricordi e ragionamento, son quasi 5 anni che non tocco C...
ottima spiegazione, molto chiara
grazie mille dell'aiuto
ciao :)
FrancoBross
20-01-2011, 16:36
Immagino che quella newline in più veniva passata dalla scanf nel buffer usato per lo standard output, sul quale si appoggia anche la printf per il suo funzionamento.
In pratica era come se con la scanf avessi inserito una riga in più nel buffer, la successiva printf trovando già una riga nel buffer scaricava in output sulla consolle quest'ultima (riga vuota) e memorizzava nel buffer "inserisci coefficienti
\n" che restava in attesa di essere scaricato da una chiamata futura (nel tuo caso un'altra scanf).
Almeno credo :stordita: sono andato a ricordi e ragionamento, son quasi 5 anni che non tocco C...
giustissimo 10+ :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.