Aiuto programma in C!

di il
3 risposte

Aiuto programma in C!

Salve ho un problema con questo esercizio, la parte dove si deve indicare l'output la sono riuscita a fare ma ho un problema con la seconda.
Esercizio 8 Dopo aver indicato l’output del seguente programma, riscriverlo usando l’aritmetica
dei puntatori invece dell’indicizzazione dell’array (dovranno essere eliminati tutti gli usi dell’operatore
[]).
Codice originale:
#include <stdio.h>
int main(void)
{
int i,j,*k;
int a[10][10];
f o r (i=0;i<10;i++) {
f o r (j=0;j<10;j++)
a[i][j]=i+j;
                           }
k=a[3];
printf("%d\n",*k);
}
Ho provato a farlo:
#include <stdio.h>
int main(void)
{
int i,j,*k;
int **m;
for (i=0;i<10;i++) {
for (j=0;j<10;j++)
*(*(m+i)+j)=i+j;
                        }
k=*m+3;
printf("%d\n",*k);
}
ma mi restituisce segmentation fault.Qualcuno mi può aiutare? grazie in anticipo.

3 Risposte

  • Re: Aiuto programma in C!

    **m deve essere allocato con malloc, ovvero chiami una prima volta la malloc per farti dare lo spazio che conterrà i puntatori ai vettori e poi la richiami per ogni elemento di m per ricreare la seconda dimensione del puntatore.
  • Re: Aiuto programma in C!

    Ma facendo cosi non ti viene?
    
    int *m;
    int i,j,l=10;
    int *k;
    for(i=0;i<l;i++)
    {
        for(j=0;j<l;j++)
        {
            *(m+l*i+j);
        }
    }
    k=*m+3;
    
    
  • Re: Aiuto programma in C!

    Ma hai compilato il tuo codice Giacomo? Hai degli errori? Sì? Allora controlla cosa dicono gli errori prima di proporlo ...
Devi accedere o registrarti per scrivere nel forum
3 risposte