مشکل آرایه دو بعدی در c++

mojmos

Member
سلام
من در c++ اومدم و دو تا آرايه دو بعدي به صورت زير تعريف کردم:
int ** A;
int ** B;

و اونها رو به صورت دو تا آرايه دو بعدي 4*4 مقداردهي کردم به اين صورت:

A[0][0]=4;
A[0][1]=1;
A[0][2]=2;
A[0][3]=0;
A[1][0]=1;
A[1][1]=1;
A[1][2]=0;
A[1][3]=1;
A[2][0]=0;
A[2][1]=1;
A[2][2]=0;
A[2][3]=2;
A[3][0]=0;
A[3][1]=0;
A[3][2]=2;
A[3][3]=3;
//
B[0][0]=2;
B[0][1]=2;
B[0][2]=2;
B[0][3]=0;
B[1][0]=0;
B[1][1]=0;
B[1][2]=1;
B[1][3]=1;
B[2][0]=1;
B[2][1]=1;
B[2][2]=0;
B[2][3]=0;
B[3][0]=0;
B[3][1]=0;
B[3][2]=1;
B[3][3]=3;
//

چيزي که غير معقول به نظر ميآد اينه که وقتي درايه ها رو چاپ میکنم همه درايه ها درست مثل مقدار دهي من هستند به جز درايه هاي سطر سوم از A که دقيقا مثل درايه هاي سطر سوم B ميشن!

براي اينکه بهتر بفهمين فايل سورسشو مي ذارم اينجا
ممنون از همه عزيزان
 

emad_67

Member
شما وقتی یه متغیر ** تعریف کردی و اصلا برای اون حافظه نگرفتی که بتونی در اون عدد قرار بدی.
برای تعریف آرایه دو بعدی به صورت زیر بنویس:
کد:
void main()
{
	int **A=new int *[4];
	for(int i=0;i<4;i++)
		A[i]=new int[4];
}
این دستور یه آرایه 4*4 میسازه. علت اینکه یه تعدادی از خونه ها رو هم تونستی مقدار دهی کنی اینه که در c یا c++ هیچ کنترلی روی طول آرایه ها وجود داره مثلا ممکنه یه آرایه به طول 4 تعریف کنی ولی تا 7-8 تا عدد هم بتونی در اون قرار بدی. در واقع تا وقتی وارد حافظه های سیستم یا استک نشی هیچ مشکلی پیش نمیاد ولی در کل روش غلطی هست چون همیشه باید اول تخصیص حافظه کنی بعد مقدار دهی.
 

جدیدترین ارسال ها

بالا