Newsgroup: it.comp.lang.c++
Titolo: Funzione o non funzione questo è il problema

Ciao sono Alberto.
Ho due grossi problemi:
1) Premetto che odio visceralmente le funzioni, ma sfortunatamente devo
preparare un esame e DEVO capirle. Il problema consiste in questo: ho una
fantomatica funzione che dovrebbe restituirmi un array (completo) è
possibile? ....se si come?
Ho provato con la seguente sintassi ma da errore:
...........
int selezione (...........)
{
..........
return( finale[] ); // finale è il vettore che dovrebbe restituire
}
2) A causa del fatto che ho sia il compilatore Turboc (sono obbligato ad
usarlo perché si usa all'università) sia il Borland mi chiedevo come fare
una configurazione a DOC del sistema cioè:
A) E' possibile usare le stesse librerie per entrambi i compilatori
(immagino di no comunque per sicurezza.....). Questa domanda la faccio
perché in Turboc funziona la funzione printf che con il Borland non
funziona forse è un problema di librerie e se fossero
compatibili.....saremmo nel
mondo delle fiabe dove tutti sono felici e non ci sono mai problemi quando
si programma.
B) Nell'ambiente gestito dal TurboC ho svariate directory con programmi
divisi per argomenti (scuola, compiti, esempi ecc..) posso fare in modo che
lanciando il Tc.exe parta leggendo i sorgenti da una data directory, i
compilati da un'altra ecc.. (ovviamente tutte inerenti ad una principale) e
soprattutto che metta gli .exe risultanti dalla compilazione nell'
appropriata directory ? (Avevo già fatto una configurazione simile per il
COBOL copiando i file .cfg in ogni directory e personalizzandoli tramite dei
.bat(diversi posizionati in diverse cartelle) che chiamavano il file .exe,
ma non conoscendo i parametri che posso dare in esecuzione del file Tc.exe
non so come dirgli a quale file .cfg riferirsi)
Chiunque sia arrivato fin qui a leggere merita dei ringraziamenti speciali
per il tempo concessomi; se poi ci avete anche capito qualcosa siete bravi
ed infine se avete intenzione di rispondermi siete dei santi.
GRAZIE
Alberto

ed infine se avete intenzione di rispondermi siete dei santi.
Chiunque sia arrivato fin qua si e' reso conto che questo messaggio ha
a che fare con il C e non con il C++ e quindi impostera' il follow-up
su it.comp.lang.c.
;)

 funziona
Credo non sia possibile dato che printf() è standard.
EMG

modificato.
Be', pero' non si puo' escludere a priori che una funzione che
restituisca un vettore abbia qualche utilita'.
D'altronde tutte le funzioni della libreria standard C che agiscono su
stringhe (che in C sono vettori di caratteri o puntatori a caratteri
contigui in memoria) sono impostate in questo modo.

 wrote in message
news:9ui0gs4u4494po18b...@4ax.com...

Le funzioni che dici ritornano tutte dei *PUNTATORI*: nessuna
di esse "restituisce un vettore".  Per la maggior parte dei
casi si tratta (cosa abbastanza inutile) dello stesso puntatore
che era stato inzialmente passato alla funzione stessa; strchr
e strstr due ragionevoli eccezioni (per le quali e` chiaro che
esse tornano normalmente un puntatore ENTRO il 'vettore' [in
realta, array]).
Una funzione che restituisce veramente un vettore ha una
semantica ben diversa -- visto che non e` possibile con un
array, vediamola con un vero vettore:
    std::vector<int> pippo(std::vector<int> pluto)
    {
        int s = pluto.size();
        for(int i=0; i<s; ++i) ++pluto[i];
        return pluto;
    }
qui, con semantica di passaggio per valore, e ritorno del
vettore (entrambi casi di copy constructor), si ha appunto
(non a basso costo...:-) la semantica richiesta.  Invece:
    std::vector<int>& pippo(std::vector<int>& pluto)
    {
        int s = pluto.size();
        for(int i=0; i<s; ++i) ++pluto[i];
        return pluto;
    }
qui, con semantica per riferimento, si ha un caso analogo
a quello del ritorno di un puntatore entro l'array passato
come argomento: non particolarmente utile in questo caso.
Purtroppo, fra i loro N-mila altri casini, i costrutti di
bassissimo livello noti come "array" hanno quello di non
supportare la semantica per valore (passaggio e ritorno).
Alex

di esse "restituisce un vettore".
Io credo che le nostre incomprensioni nascano dal fatto che stiamo
discutendo di argomenti strettamente attinenti al C in un ng
strettamente attinente al C++ e nel quale, quando si parla di vettori,
si e' portati subito a rifarsi ai "vector".
In realta', so benissimo che le funzioni in questione restituiscono
dei *PUNTATORI*, ;), infatti nel mio msg precedente ho detto che sono
dei vettori decaduti, cioe' dei puntatori al loro primo elemento.
In realta' sono stato impreciso : quando parlo di vettori, nel mio
messaggio, mi riferisco agli array del C.

 Se modifichi un vettore all'interno di una funzione o sottoprogramma anche
il modulo principale lo vede.
   Per le altre cose non saprei, è tanto che non programmo in C++. AUGURI!