|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Nov 2004
Messaggi: 124
|
[C] Matrice dinamica
Ciao,
per non fare impicci con l'allocazione dinamica di una matrice ho fatto così e funziona: #include <stdio.h> int main(void){ int a,b; scanf("%d\n%d", &a, &b); int matrice[a][b]; matrice[7][7] = 2; printf("\n%d", matrice[7][7]); return 0; } E' una porcheria dal punto di vista stilistico o è una cosa abbastanza normale? Se invece dichiaro la matrice int matrice[a][b]; insieme alle variabili a e b lo compila sempre ma quando lo faccio partire a volte da un messaggio di errore...come mai? Grazie |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1451
|
Se non inizializzi le variabili a e b non ci fai nulla...
__________________
Ciao ~ZeRO sTrEsS~ |
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Nov 2004
Messaggi: 124
|
cio io le variabili a e b le inizializzo con la scanf e così mi funziona e mi crea una matrice delle dimensioni immesse dall'utente....su win funziona, non so su linux...
|
![]() |
![]() |
![]() |
#4 | ||
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Re: [C] Matrice dinamica
Quote:
Anzitutto non è codice C, visto che nei blocchi di codice C devi prima dichiarare tutte le variabili e poi eseguire le istruzioni. Poi: matrice[7][7] è un punto che potrebbe non essere stato liberato, per cui con l'assegnazione andresti a sovrascrivere cose che non sai cosa sono, e che magari sono importanti. Quote:
Che semanticamente sia sbagliata, il compilatore non lo può sapere. In conclusione: studia l'allocazione dinamica --- e fai un ripasso sulle cose che vengono prima, che qualche lacuna ce l'hai.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
||
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:29.