Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    38

    [C++]problema in allocazione dinamica memoria

    Ciao a tutti,
    il mio problema è il seguente ho una struct:
    typedef struct
    {
    double ascissa, ordinata;
    }tipopunto;

    un array:
    tipopunto *arr[N];

    alloco un blocco di struct:
    arr =(malloc(N * sizeof(tipopunto));

    e mi dava il seguente errore:
    incompatible types in assignment of `void*' to `tipopunto*[4]'

    giustamente il MALLOC ritorna un puntatore ad un VOID e allora ho fatto nel seguente modo:
    arr =(struct *)malloc(N * sizeof(tipopunto));

    però adesso mi da:
    expected primary-expression before "struct"

    Quale è il mio errore...?Grazie mille a tutti!!!

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Stai cercando di modificare l'indirizzo immodificabile di un array.

    Devi fare così:
    In C
    codice:
    for (i=0;i<N;i++)
      arr[i] = (struct tipodato*) malloc (sizeof(tipodato));
    
    
    for (i=0;i<N;i++)
      free(arr[i]);
    in C++
    codice:
    for (i=0;i<N;i++)
      arr[i] = new tipodato;
    
    
    for (i=0;i<N;i++)
      delete arr[i];

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    38
    grazie mille!!!
    vero!!!

  4. #4
    Ok definirsi un tipo complesso per esercizio, ma sul campo ti consiglio una roba del tipo:

    Codice PHP:
    #include <complex>
    #include <iostream>

    typedef std::complex <doubletipopunto;

    int main (){
        
    tipopunto aPoint (12);
        
    std::cout << aPoint << std::endl;
        return 
    0;

    poi ovvio, in C++, come ti ha detto Shodan, usa new.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.