Programma in c??

toni1705

Nuovo Utente
98
9
ho visto questo programma su una slide e non riesco a capire una cosa
Codice:
#include <stdio.h>
#include <stdlib.h>
main()
{ int n,i,max,min;
int *b;
printf("quanti numeri vuoi inserire?: ");
scanf("%d",&n);
b=malloc(n*sizeof(int));
for (i=0;i<n;i++){
    printf("inserire il n.%d: ",i+1);
scanf("%d",&b[I]);}
max=b[0];
min=b[0];
for (i=0;i<n;i++)
    if (b[I]>max)
    max=b[I];
printf("\nvalore massimo:%d",max);
for (i=0;i<n;i++)
    if (b[I]<min)
    min=b[I];
printf("\nvalore minimo:%d",min);
/* stampare il vettore intero*/
printf("\ni numeri del vettore sono");
for (i=0;i<n;i++)
    printf("\nn.%d vale:%d",i+1,b[I]);
free(b);}
il programma inizia con la dichiarazione di un puntatore...
come fa un puntatore a funzionare senza che ci sia un' qualcosa a cui puntare ..
c'è qui è dichiarato solo il puntatore successivamente viene utilizatto come array ( nel caso in cui deve salvare i numeri b[ i ] )
come mai?[/i]
 
Ultima modifica:

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
Codice:
int *b;                                         //dichiarazione
b=malloc(n*sizeof(int));        //allocazione dell'area di memoria a cui b punta
free(b);                                     //deallocazione dell'area di memoria a cui b punta
 
  • Mi piace
Reazioni: Andretti60

_Achille

Utente Èlite
3,067
725
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
HDD
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
GPU
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
PSU
RM550X
Case
NZXT S340
Periferiche
Anne Pro 2, Razer Abyssus
OS
Windows 10 Pro

Andretti60

Utente Èlite
6,440
5,091
Quel programma comunque non funzionera' mai (non compila nemmeno)
C e' un linguaggio 'case sensitive', per cui la variabile 'i' e' distinta dalla variable 'I' (minuscola e maiuscola)
Il programma non compila perche' viene usato 'I' (maiuscolo) che non viene mai dichiarato.
 

Andretti60

Utente Èlite
6,440
5,091
... è dichiarato solo il puntatore successivamente viene utilizatto come array ...
Queste sono le cose per cui C o lo si ama o lo si odia :)
Per chi vuole ottimizzare l'uso della memoria, e' molto conveniente dichiarare una variabile come un puntatore, e poi utilizzarlo come se fosse un vettore. Il compilatore permette di farlo. Ma fa impazzirfe i puristi della programmazione che preferiscono che le variabili vengano usate SOLO nella maniera in cui vengono dichiarate tipo C#, dove non esiste un generico metodo come il "malloc" per allocare memoria. Usare una variabile come vettore e come puntatore ha i suoi pregi e i suoi difetti. Se si SA cosa si sta facendo, e' conveniente, ma puo' causare seri problemi perche' sono due cose sostanzialmente diverse.
 

toni1705

Nuovo Utente
98
9
Quel programma comunque non funzionera' mai (non compila nemmeno)
C e' un linguaggio 'case sensitive', per cui la variabile 'i' e' distinta dalla variable 'I' (minuscola e maiuscola)
Il programma non compila perche' viene usato 'I' (maiuscolo) che non viene mai dichiarato.
sisi il programma funziona soltato che quando ho ricopiato inizialmente non mi dava l'impostazione del code
ho dovuto fare un casino ho inserito un codice e la i è stata modificata comunque con la i normale (sulla slide ) funziona benissimo
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili