C語言,這個程序在運行的過程中,為什麼說內存不能讀取?
#include<stdio.h>
void main()
{
int a[3][3],b[3],c[3],d[3],i,j,*m;
printf("請輸入一個3*3的矩陣:\n");
for(i=0;i<=2;i++)
{
m=a[i];
for(j=0;j<=2;j++,m++) scanf("%d",m);
}
for(m=*a,i=0;i<=2;m+=3) b[i]=*m;
for(m=*a+1,i=0;i<=2;m+=3) c[i]=*m;
for(m=*a+2,i=0;i<=2;m+=3) d[i]=*m;
for(m=b,i=0;i<=2;i++,m++) a[0][i]=*m;
for(m=c,i=0;i<=2;i++,m++) a[1][i]=*m;
for(m=d,i=0;i<=2;i++,m++) a[2][i]=*m;
for(i=0;i<=2;i++)
{
m=a[i];
for(j=0;j<=2;j++,m++) printf("%d ",*m); printf("\n");
}
}
最佳回答:
int a[3][3],b[3],c[3],d[3],i,j,*m;
......
for(j=0;j<=2;j++,m++) scanf("%d",m);
指針一般要分配空間才能用,或者指定一個起始地址,你的這個錯誤的原因就是你只是定義了*m但是你沒有初始化它,那麼就沒有指向任何內存地址,屬於隨機地址,那麼你就引用不到那個地址,就導致內存不能“read” 指針一般要麼直接初始化 如 char *s="abecesaa"; 要麼就把一個數組的首地址付給他如 char a[4]; char *s=a; 要麼 就要給他分配空間 如 char *s=(char *)malloc(sizeof(char));或其他的初始化操作後才能使用正確。看樓主題意不用指針會很簡單,指針雖然效率比數組高,但是簡單問題復雜化,未免有點大材小用。指針有很多的有點,但是對於初學者不建議使用,因為這個會在使用的過程中出現很多問題,絕大部分是指針沒初始化或初始化不正確,防不勝防!