|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 1102
|
Domande di base per capire il c++
Ciao a tutti,leggendo alcuni listati, mi trovo prototipi di funzioni scritti in maniera diversa da come è scritto su alcuni libri di testo, ve li posto:
void BubbleSort(Vettore , const int): allora c'è il tipo dei parametri formali, ma non c'è il nome della variabile non sembra strano? void LeggiElementi(Vettore, int &); nel main così LeggiElementi(V,n), ma scusate quando n deve essere passato al parametro formale, ma gli viene passato il valore o l'indirizzo? int main(void), ma il void dentro il main direbbe di pietro che c'azzecca, non ci dovrebbe essere (int argc, char *argv[])? differenze tra dichiarazione e definizione(voi direte la definizione porta allocazione in memoria, si ok ma come faccio a distinguerla nel listao da una dichirazione? per voi saranno tutte semplicissime, però io voglio capire bene. Grazie a tutti |
|
|
|
|
|
#2 | ||||
|
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Andando per ordine:
Quote:
Quote:
L'indirizzo non viene passato, questo succederebbe nel caso in cui la funzione richiedesse un puntatore: void LeggiElementi(Vettore, int*); E la chiamata sarebbe così: LeggiElementi(V, &n). (Attenzione a non confondere l' "&" anteposto (che serve appunto ad estrarre l'indirizzo della variabile, all' "&" posposto (che indica invece, come già visto, un riferimento a variabile). Quote:
Quote:
La differenza tra dichiarazione e definizione, a livello di forma, è che la dichiarazione è solo una traccia di quella che sarà poi la definzione, e quindi deve contenere solo il nome della funzione e tipi degli argomenti formali e dell'argomento restituito (è permesso comunque inserire dei nomi per gli argomenti formali, e secondo me è pure consigliabile in quanto è una sorta di autodocumentazione della funzione). La dichiarazione è il solo prototipo, tanto che viene conclusa con un semplice ";" dopo il prototipo stesso (a parte il caso delle funzioni inline, ma per ora lasciale stare), mentre le definizioni riportano l'intero corpo di istruzioni che indicano quello che effettivamente le funzioni fanno (le definizioni, in parole povere, contengono sempre l'implementazione di una funzione. Quindi, se un prototipo è seguito da un blocco di istruzioni sai già che è una defizione di funzione, se invece tale corpo non c'è e il prototipo si conclude con il punto e virgola allora sai già che è solo una dichiarazione. Ultimo appunto: quando utilizzi una funzione basta avere la sola dichiarazione nel file che stai scrivendo. Le definzioni sono implicitamente "extern" quindi il compilatore andrà a cercarsi autonomamente una definizione adeguata sui vari file che compongono il progetto. Spero di non averti fatto più confusione che altro! :-P Ultima modifica di [Kendall] : 09-05-2012 alle 12:45. |
||||
|
|
|
|
|
#3 | ||||
|
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Quote:
è nell'implementazione della funzione che deve comparire necessariamente il nome del parametro Quote:
se in C avresti scritto LeggiElementi(V,&n) in C++ scriverai LeggiElementi(V,n) e i prototipi sono LeggiElementi(Vettore, int*) e LeggiElementi(Vettore, int&) perchè in C++ si ampio uso dei riferimenti, mentre in C non esistono Quote:
Codice:
int main(void) int main(int argc, char **argv) int main(int argc, char *argv[]) int main() Quote:
ad esempio Codice:
void pippo(int n); la dichiarazione corrisponde al prototipo della funzione ( quello che vedi nei file .h per intenderci ) |
||||
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2003
Messaggi: 1102
|
ragazzi
ragazzi vorrei chiedervi delle spiegazioni su questo
Codice:
bool Cerca_Prodotto(const Magazzino M, const int n, const char * C, int & pos){
bool trovato=false;
int i=0;
pos=-1;
cout <<"Trovato intermedio: "<<trovato<<endl;
cout <<"i vale: "<<i<<endl;
while(i<n && !trovato)
if(!strcmp(M[i].Codice,C)) {
cout <<"Trovato prima: "<<trovato<<endl;
pos=i;
trovato=true;
cout <<"Trovato dopo: "<<trovato<<endl;
}
else i++;
return trovato;
}
Codice:
#include <cstdlib>
#include <iostream>
#include "Prodotti1.h"
using namespace std;
int main(int argc, char *argv[])
{
// Test delle funzioni sul tipo prodotto
Prodotto P1;
Inserisci_DatiProdotto(P1);
Visualizza_DatiProdotto(P1);
// ********** FINE *********************
// Inizio programma
Magazzino M;
int n;
// PARTE 1
Crea_Magazzino(M,n);
Visualizza_Magazzino(M,n);
system("PAUSE");
// PARTE 2
char C[DIM];
int pos=-1;
cout << "\n Ricerca Prodotto.";
cout << "\n Inserire il Codice: ";
cin.ignore();
cin.getline(C,DIM);
if(Cerca_Prodotto(M,n,C,pos)) cout << "\n Prodotto presente. Posizione: " << pos;
else cout << "\n Prodotto NON presente." ;
system("PAUSE");
Aspetto il vostro aiuto. Grazie |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:33.




















