PDA

View Full Version : سوال: تعریف آرایه دو بعدی به صورت پویا



javad_babaey
جمعه 08 اردیبهشت 1391, 09:43 صبح
سلام چطور میتونم یه آرایه ی دو بعدی پویا تعریف کنم؟
همچنین اگه بخوام عناصر یک آرایه رو ارجاع بدم باید چیکار کنم؟

ASGGSA
جمعه 08 اردیبهشت 1391, 12:20 عصر
سلام.
باید از ساختمان ها استفاده کنی البته شاید دوستان راههای بهتر دیگه ای بلد باشند.
فقط کافی یک ساختمان و یک متغیر از نوع اشاره گر برای آن تعریف کنی.
ساختمان :

struct Array
{
int A[10][10];
}*array;

اختصاص حافظه :

array = (struct Array*)malloc(sizeof(struct Array));
array->A[0][0] = 10;
cout << array->A[0][0];

موفق باشید.

ASGGSA
شنبه 09 اردیبهشت 1391, 07:13 صبح
سلام.
راه سادترش بصورت زیر هستش :

int *A = new int[10,10];
A[0,0] = 5;
cout << A[0,0];

موفق باشید.

mehdi.mousavi
شنبه 09 اردیبهشت 1391, 19:03 عصر
سلام. راه سادترش بصورت زیر هستش :


int *A = new int[10,10];
A[0,0] = 5;
cout << A[0,0];


موفق باشید.


سلام.
این کد، کاری که شما انتظار دارید رو نمیکنه و تصادفا هم مشکلی ایجاد نمیکنه (چون خونه صفر و صفر رو دارید Index می کنید). ما در C/C++ چنین Notation ای برای تعریف آرایه دو بعدی نداریم. کد زیر رو در نظر بگیرید:

int *p = new int[15, 20];
p[12, 4] = 5;

این کد، علیرغم تصور بسیاری از افراد، باعث ایجاد یک آرایه تک بعدی به طول 20 خانه میشه... در حقیقت، اینجا ابتدا سمت چپ Comma در Square Bracket اجرا میشه (بعنوان یک Instruction جدا)، سپس عدد 20 بعنوان طول اون آرایه در نظر گرفته میشه. در خط دوم نیز عدد اون Comma باعث میشه تا عدد 12 بی تاثیر بشه، در نتیجه خانه پنجم آرایه (4 + 1) set بشه. بنابراین، کد فوق تفاوتی با کد زیر نداره:

int *p = new int[20];
p[4] = 5;

موفق باشید.

پاورقی: @javad_babaey (http://barnamenevis.org/member.php?234597-javad_babaey): لطفا در نوشته های قبلی من در بخش C/C++ یا MFC جستجو کنید، قبلا در این مورد توضیح داده ام. اگر پیدا نکردید بفرمایید تا روش صحیح تعریف آرایه دو بعدی Dynamic رو خدمتتون عرض کنم.