Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C] Array e puntatori

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175

    [C] Array e puntatori

    Allora ho questo programma che al momento della compilazione mi dà questo errore:

    saxpy.c: In function `main':
    saxpy.c:45: warning: passing arg 5 of `saxpy' from incompatible pointer type (l'ho segnata in blu)
    saxpy.c: In function `saxpy':
    saxpy.c:63: incompatible types in assignment(l'ho segnata in rosso)


    Lo stesso procedimento funziona se al posto degli array ci sono variabili, quindi cosa c'è di diverso quando si hanno array??

    codice:
    #include <stdio.h>
    #include <malloc.h>
    
    /* PROTOTIPO FUNZIONE */
    void saxpy(float *X, float *Y, float alfa, int n, float *Z); 
    
    /* PROGRAMMA CHIAMANTE*/
    main()
    {
    	/* DICHIARAZIONE VARIABILI */
    	float *X, *Y, *Z, alfa;
    	int i, c, j;
    	int n;
    
    	/* LETTURA ELEMENTI ARRAY */
    	printf("Inserire il numero di elementi n: ");
    	scanf("%d",&n);
    
    	/* LETTURA ALFA */
    	printf("Inserire il numero alfa: ");
    	scanf("%f",&alfa);
    
    	/* ALLOCAZIONE DINAMICA DELLA MEMORIA */
    	if(!(X = (float *)malloc(n*sizeof(float))))
    	abort();
    	if(!(Y = (float *)malloc(n*sizeof(float))))
    	abort();
    	if(!(Z = (float *)malloc(n*sizeof(float))))
    	abort();
    
    	/* LETTURA ELEMENTI ARRAY X */
    	printf("\n");
    	for (i=0; i<=n-1; i++){
    	printf("Inserire il valore dell'elemento X%d: ", c=i+1);
    	scanf("%f", &X[i]);
    	}
    
            /* LETTURA ELEMENTI ARRAY Y */
    	printf("\n");
    	for (i=0; i<=n-1; i++){
    	printf("Inserire il valore dell'elemento Y%d: ", c=i+1);
    	scanf("%f", &Y[i]);
    	}
    
            saxpy(X, Y, alfa, n, &Z);
    	for (i=0; i<=n-1; i++){
    	printf("%f\n", Z[i]);}
    	}
    
    /****************** SPECIFICHE FUNZIONE *************************/
    void saxpy(float *X, float *Y, float alfa, int n, float *Z)
    {
    int i;
    
    	for (i=0; i<=n-1; i++)
    	 {
    		X[i] = X[i] + alfa * Y[i];
        }
      *Z = X;
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    1,965
    saxpy(X, Y, alfa, n, &Z);

    perhe' non provi senza & ?

    *Z = X;

    se vuoi fare un puntatore a puntatore devi usare &X


    spero di aver risposto bene, non sono ancora bravo in C

  3. #3
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    devi includere stdlib.h per usare abort().
    E ricordati di dichiarare la funzione main di tipo void oppure di mettere il valore di ritorno.

    Se setti il compilatore -wall dovrebbe darti gli errori, all'esame di solito controllano con quell'opzione

    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    nn mi funziona lo stesso....
    perchè non proveresti a compilarlo

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175
    risolto

  6. #6
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Originariamente inviato da Metallica
    nn mi funziona lo stesso....
    perchè non proveresti a compilarlo
    ero a lezione...
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

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.