From 2e5192afe6356deecf769cdfb4f4dca7aa39399b Mon Sep 17 00:00:00 2001 From: Alessandro Ferro <49845537+xfarrow@users.noreply.github.com> Date: Thu, 18 Mar 2021 21:54:45 +0100 Subject: [PATCH] Initial commit --- .gitattributes | 2 + teoria/a.out | Bin 0 -> 14488 bytes teoria/allocazioneDinamicaMemoria.cpp | 44 +++++++++++++ teoria/domande.cpp | 17 ++++++ teoria/lezione2.cpp | 51 ++++++++++++++++ teoria/multiple_files/build.sh | 1 + teoria/multiple_files/executable.out | Bin 0 -> 13280 bytes teoria/multiple_files/main.cpp | 8 +++ teoria/multiple_files/test.cpp | 5 ++ teoria/multiple_files/test.hpp | 4 ++ teoria/puntatori.cpp | 85 ++++++++++++++++++++++++++ teoria/riferimenti.cpp | 84 +++++++++++++++++++++++++ 12 files changed, 301 insertions(+) create mode 100644 .gitattributes create mode 100755 teoria/a.out create mode 100644 teoria/allocazioneDinamicaMemoria.cpp create mode 100755 teoria/domande.cpp create mode 100755 teoria/lezione2.cpp create mode 100755 teoria/multiple_files/build.sh create mode 100755 teoria/multiple_files/executable.out create mode 100755 teoria/multiple_files/main.cpp create mode 100755 teoria/multiple_files/test.cpp create mode 100755 teoria/multiple_files/test.hpp create mode 100644 teoria/puntatori.cpp create mode 100644 teoria/riferimenti.cpp diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/teoria/a.out b/teoria/a.out new file mode 100755 index 0000000000000000000000000000000000000000..fe401b081470ea0f281f265a082721cd0f27f06d GIT binary patch literal 14488 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 +using namespace std; +void array(); +void arrayInizializzato(); +void noArray(); + +int main(){ + return 0; +} + +void array(){ + int* ptr = nullptr; + try{ + ptr = new int[5]; + }catch(bad_alloc ex){ // Se non riesce a creare abbastanza memoria viene sollevata un'eccezione + cout<<"Errore allocazione memoria"; + } + + for(int i=0;i<5;i++){ + cout<<"Valore "<>ptr[i]; + } + for(int i=0;i<5;i++){ + cout< +using namespace std; +int main(){ + string s1 = "hello"; + string s2 = "world"; + cout<<"Stringa 1: "< +#include "header.hpp" +using namespace std; +int main(){ + + /* Puntatori */ + + const int x = 5; + const int y = 3; + + const int* p = &x; + //*p = 3; // errore + p = &y; //OK + + const int* const p2 = &x; + //*p2 = 3; //errore + //p2 = &y; //errore + + /* Casting */ + + char c = 'a'; + void* p3 = &c; + //cout<<*p3; //errore (non conosce il tipo) + //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 literal 0 HcmV?d00001 diff --git a/teoria/multiple_files/main.cpp b/teoria/multiple_files/main.cpp new file mode 100755 index 0000000..c1f637f --- /dev/null +++ b/teoria/multiple_files/main.cpp @@ -0,0 +1,8 @@ +#include +#include "test.hpp" +using namespace std; +int main(){ + cout<<"I'm main"< +#include "test.hpp" +void test(){ + std::cout<<"I'm test"< +using namespace std; + +// prototipi di funzione +void assegnazione(); +void dimensione_puntatore(); +void puntatori_const(); +void casting(); + +int main(){ + casting(); + return 0; +} + +void casting(){ + int i = -1; + int* ptr_int = &i; + /* trasformo il puntatore da puntatore a intero a puntatore a unsigned intero + quindi stamperà 4294967295 perchè interpreta il valore puntato come unsigned */ + cout<<*((unsigned int*)ptr_int)<(ptr_void)); // Il tipo void* può sempre essere castato + //cout<<*(static_cast(ptr_int)); // errore. Non avrebbe dato errore con il cast normale +} + +void puntatori_const(){ + const char carattere_const = 'a'; + char carattere = 'b'; + + /* ----- CONST TYPE* PTR ----- */ + // Se una variabile è const anche il suo puntatore deve esserlo + + // char* ptr = carattere_const; // errore + const char* ptr = &carattere_const; // OK + /* Se un puntatore è const char*, non posso modificare il valore della + variabile, ma posso modificare il valore del puntatore in sè */ + // *ptr = 'z'; //errore + ptr = &carattere; //ok + + /* ----- CONST TYPE* CONST PTR ----- */ + /* const char* const vuol dire che è un puntatore const che non + può neanche modificare il valore del puntatore in sè */ + + const char* const ptr2 = &carattere_const; + // *ptr2 = 'z'; //errore + // ptr2 = &carattere; //errore + + /* ----- TYPE* CONST PTR ----- */ + /* Punta a tipi non-const ma il suo valore non può essere cambiato, + ovvero non può puntare a locazioni diverse rispetto alla dimensione_puntatore + inizializzazione */ + + char* const ptr3 = &carattere; + *ptr3 = 'k'; // OK + char carattere2 = 's'; + //ptr3 = &carattere2; // errore +} + +void dimensione_puntatore(){ + /* la dimensione di un puntatore non dipende dal tipo a cui punta + dato che deve semplicemente essere abbastanza grande per individuare + una cella di memoria */ + + long double* ptr1 = nullptr; + char* ptr2 = nullptr; + + cout< +using namespace std; +void lvalue(); +void rvalue(); +void move(); +int f(); + +int main(){ + //lvalue(); + //rvalue(); + move(); + return 0; +} +void lvalue(){ + /* Il riferimento è come se fosse un puntatore, ma non devo usare la deferenziazione + per accedere al contenuto. è utile quando vogliamo passare dei parametri a puntatore + funzione per riferimento (risparmiando sulla copia) ma senza usare la sintassi + dei puntatori */ + + int var = 7; + int& riferimento = var; + riferimento++; + cout<