Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514

    c problema con puntatori(programma inutile?)

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    void carica(int *v1)
    {
    int i;
    for(i=0;i<5;i++)
    {
    printf("\nInserisci l'elemento %d :",i);
    scanf("%d",(*v1+i));
    }
    }
    void comunica(int *v1)
    {
    int i;
    for(i=0;i<5;i++)
    printf("\nL'elemento è %d",(*v1+1));
    }
    main()
    {
    int *p1;
    int carica(int *p1);
     int comunica(int *p1);
    system("pause");
    }
    il seguente programma dovrebbe farmi capire che sommando *v1+1 non faccio altro che riferirmi ad un indirizzo di memoria diverso da quello di prima,.il fatto che non accade nulla quando lo lancio è normale???
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  2. #2
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Il programma è completamente sbagliato, concettualmente e sintatticamente, quindi c'è ben poco da correggere.

    Ecco un suo equivalente corretto:
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    void carica(int *);
    void comunica(int *);
    
    void main()
    {
    	
    	int *p1 = NULL;
    	p1 = (int *) malloc(5 * sizeof(int));
    	if(!p1) 
    	{
    		printf("Allocation failed.\n");
    		return;
    	}
    	printf("Ciao\n");
    	carica(p1);
    	comunica(p1);
    	system("pause");
    
    }
    
    void carica(int *v1)
    {
    	int i;
    	for(i=0; i<5; i++)
    	{
    		printf("\nInserisci l'elemento %d :",i);
    		scanf("%d",v1+i);
    	}
    }
    
    void comunica(int *v1)
    {
    	int i;
    	for(i=0;i<5;i++)
    	{
    		printf("\nL'elemento è %d",*(v1+i));
    	}
    	printf("\n");
    }
    Ma siccome stai cominciando a fare programmi senza aver capito i concetti, ti conviene studiarti l'argomento e per le tue domande, come ti ho già detto, fai una ricerca nel forum.


  3. #3
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    ehm il programma sarà pure sbagliato ma il compilatore non rileva errori e il codice è COMPLETAMENTE COPIATO dal manuale!

    il ke mi lascia perplesso circa l'efficacia
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  4. #4
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    No, non so da che manuale l'ahi copiato, ma non ha alcun senso questo programma.
    Anche gli altri utenti dovrebbero darmi ragione...

  5. #5
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    attendo notizie
    mi intriga la cosa
    forse era solo per speigare
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  6. #6
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    Non capisco neanche come riesca a compilarlo... :master:

    Gli errori che ho trovato sono:

    • le chiamate alle funzioni hanno argomenti che non combaciano (int* e int)
    • alla scanf non passi l'indirizzo di un intero ma il contenuto (non inizializzato)
    • la printf non cicla sui numeri in quanto l'offset è sempre 1 e non i
    Linux user number 403381

    Stop TCPA!

  7. #7
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    ragazzi + tardi provo as riparire il manuale e vi faccio sapere non vorrei avere copiato male qualcosa
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  8. #8
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Il programma che hai scritto è un ottimo esempio di cattiva programmazione con i puntatori, perche passi ad una funzione il valore di un puntatore non inizializzato (*p), e poi la funzione inizia a scrivere in 5 locazioni di memoria a partire da quella puntata da *p, che puo contenere qualsiasi valore e puntare in qualsiasi locazione di memoria, cosi quando scrivi quei 5 valori puoi andare a cancellare altre variabili o al limite persino istruzioni del programma stesso.


    Credo sia ora che tu cambi manuale perche non è la prima volta che riporti del codice sbagliato, non è che per caso usi lo shildt?

    Se mi dai la mail ti mando un po di guide sul C.


  9. #9
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    ti ringrazio ma mi serve prepararmi su questo io in genere uso il vb come linguaggio
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  10. #10
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Lo Schildt non ha errori così gravi, a me va bene!

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