Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C++] Aiuto codice

  1. #1

    [C++] Aiuto codice

    ho provato a compilare questo codice:
    #include <stdio.h>
    #include <stdlib.h>
    typedef struct base{char *a;}tipo1;
    int main(){
    tipo1 no;
    char *a;
    no.a=(char *)malloc(5*sizeof(char));
    a=no.a;
    a[0]='v';
    a[1]='a';
    a[2]='d';
    a[3]='o';
    a[4]='\0';
    int i=0;
    while (a[i]!='\0'){
    printf("%c", a[i]);
    i++;}
    scanf("%d", &i);
    return 0;}

    e mi è uscito come output "vado" come mi sarei aspettato...
    ho provato con quest'altro:

    #include <stdio.h>
    #include <stdlib.h>
    typedef struct base{char *a;}tipo1;
    typedef struct nodo{base *x;}tipo2;
    int main(){
    tipo2 no;
    char *a;
    no->x.a=(char *)malloc(5*sizeof(char));
    a=no->x.a;
    a[0]='v';
    a[1]='a';
    a[2]='d';
    a[3]='o';
    a[4]='\0';
    int i=0;
    while (a[i]!='\0'){
    printf("%c", a[i]);
    i++;}
    scanf("%d", &i);
    return 0;}

    e mi è uscito questo errore:
    8 C:\Users\simone\Desktop\chiedi spiegazione.cpp base operand of "->" has non-pointer type "tipo2'"

    Mi sapreste dire dov'è che sbaglio?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Semmai dovrebbe essere

    codice:
    no.x->a=(char *)malloc(5*sizeof(char)); 
    
    a=no.x->a;
    e non dimenticare che DEVE essere allocato anche lo spazio per cio' a cui punta x

    P.S. Usa i tag [ CODE ] per il codice, altrimenti non si capisce molto ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Originariamente inviato da oregon
    codice:
    no.x->a=(char *)malloc(5*sizeof(char)); 
    a=no.x->a;
    e non dimenticare che DEVE essere allocato anche lo spazio per cio' a cui punta x
    Infatti prima dovresti allocare lo spazio per la variabile x di tipo1 con qualcosa del tipo
    codice:
    no.x = (tipo1)malloc(sizeof(tipo1));
    una volta allocata dinamicamente la memoria per la variabile ti devi riferire alle sue sotto-parti mediante il costrutto ->, cioè:
    codice:
    no.x->a
    www.mannucci.fi.it
    La mia pagina personale dove puoi trovare guide e articoli sulla programmazione.
    Campanellino la tua guida su internet

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 © 2026 vBulletin Solutions, Inc. All rights reserved.