-2
在爲mergesort創建程序時,我在使用指針而不是數組時遇到錯誤。下面的代碼正確地運行:在使用指針時遇到錯誤「NTVDM CPU遇到非法指令」
void main()
{
clrscr();
int n,i,A[100];
cout<<"Enter the value of n: ";
cin>>n;
cout<<"\nEnter the array: ";
for(i=0;i<n;i++)
cin>>A[i];
mergesort(A,0,n-1);
cout<<"Sorted array is: ";
for(i=0;i<n;i++)
cout<<A[i]<<" ";
getch();
}
但是,當我更換A [100]通過* A在當主定義成爲以下主要即:
void main()
{
clrscr();
int n,i,*A;
cout<<"Enter the value of n: ";
cin>>n;
cout<<"\nEnter the array: ";
for(i=0;i<n;i++)
cin>>A[i];
mergesort(A,0,n-1);
cout<<"Sorted array is: ";
for(i=0;i<n;i++)
cout<<A[i]<<" ";
getch();
}
然後也程序給出正確的輸出,但在退出之前在控制檯窗口中出現錯誤「NTVDM CPU遇到非法指令」。
int getList(int* A)
{
int n;
cout<<"\nEnter the value of n: ";
cin>>n;
cout<<"\nEnter the array: ";
for(int i=0;i<n;i++)
cin>>A[i];
return n;
}
void main()
{
clrscr();
int n,*A;
n=getList(A);
mergesort(A,0,n-1);
cout<<"Sorted array is: ";
for(int i=0;i<n;i++)
cout<<A[i]<<" ";
getch();
}
然後我沒有得到非法指令錯誤:當我把數組輸入代碼在單獨的函數然後當代碼變得以下我沒有得到上述錯誤即。有人可以幫忙嗎?
在使用16位C編譯器時沒有任何意義。 –