PDA

View Full Version : اشکال در تعریف آرایه دو بعدی توسط اشاره گر ها



hercules_3d
جمعه 04 فروردین 1385, 15:23 عصر
سلام
من یه اشکالی در c++ دارم وقتی int (*x)[4] را تعریف میکنم در واقع x یه اشاره گر به گروهی از آرایه های یه بعدی ٤ عنصری هستش حالا اگه بخواهم توسط malloc یه حافظه به اون اختصاص بدم چه جوری باید این کارو بکنم؟

hercules_3d
شنبه 05 فروردین 1385, 14:39 عصر
کسی نسیت کمک کنه؟

seyedof
شنبه 05 فروردین 1385, 15:44 عصر
سلام
خوانا بنویس اوون قسمت کد رو. من بتونم بخونم کمک میکنم اما الان متوجه نمیشم که چی نوشتید.
ممنون علی

hercules_3d
یک شنبه 06 فروردین 1385, 19:05 عصر
‌‌int(*x)[4] تعریف این شکلی اون علامت ] بغله int بعده 4 باید نوشته شه هر کاری میکنم نمیشه:گریه: [4] این شکلی

seyedof
دوشنبه 07 فروردین 1385, 09:19 صبح
سلام
اگر آرایه شما یه آرایه از اشاره گر به داده صحیح است باید برای استفاده از این آرایه، اول تک تک عناصرش رو malloc کنید. یعنی عناصر از 0 تا 3 باید جدا جدا براشون حافظه تخصیص داده بشه از نوع int.
ممنون علی

hercules_3d
دوشنبه 07 فروردین 1385, 10:28 صبح
میشه کدشم بنویسید اخه من هر کاری میکنم نمیشه:گریه:

hercules_3d
دوشنبه 07 فروردین 1385, 10:49 صبح
راستی اینی که من دارم تعریف میکنم یه اشاره گر به گروهی از آرایه هاست نه ارایه ای از اشاره گر ها اون موقع باید این جوری تعریف کنم int *x [4]a (اون a رو همین جوری گذاشتم که علامت [ بغله 4 بیفته و ربطی به کد نداره) در حالی که چیزی که من تعریف میکنم این شکلیه
int(*x)[4]a

hercules_3d
چهارشنبه 09 فروردین 1385, 17:04 عصر
کمکم کنید:گریه:

Amir Oveisi
پنج شنبه 10 فروردین 1385, 00:10 صبح
دوست عزیز واسه اینکه نوشته های ریاضی و علائم درست تایپ شن بعد از اینکه عبارت رو نوشتی (و جای پرانتز و ایناش قاطی شد ) اون عبارت رو select کن و دکمه ENرو بزن.
تو نوشتی : int(*x)[4]
حالا اینکارو که گفتم بکنی : int(*x)[4]

موفق باشی :قلب:

seyedof
پنج شنبه 10 فروردین 1385, 00:51 صبح
سلام
والا این چیزی که شما نوشتید دقیقا اینکار رو میکنه : یه آرایه 4 عضوی از اشاره گر به نوع int . حالا شما میتونید هر یک از اعضای اندیس 0 تا 3 این آرایه رو جدا جدا بهشون حافظه تخصیص بدین و استفاده کنید.
ممنون علی

mamadgmail
پنج شنبه 10 فروردین 1385, 02:38 صبح
سلام اگه منظورتون رو درست فهمیده باشم مثال رو نگاه کنید


#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
int **a;
a=new int*[10];
for(int i=0;i<10;i++)
a[i]=new int[10];

for(i=0;i<10;i++)
for(int j=0;j<10;j++)
{
a[i][j]=i;
cout<<endl<<a[i][j];
}

getch();
}



خوش باشید.

Nasser_Far
یک شنبه 13 فروردین 1385, 00:34 صبح
با سلام
چون عناصر آرایه تو حافظه پشت سر هم هستند میتونید تمام حافظه برای آرایه رو یکجا
با malloc تخصیص بدین

hercules_3d
یک شنبه 13 فروردین 1385, 21:07 عصر
پس اون موقع int *x[4] یعنی چی؟ اگه شما میگین int (*x)[4] این عبارت نشون دهنده ی آرایه 4 عضوی از اشاره گر به نوع int هستش اون موقع این دو عبارت چه فرقی با هم میکنن؟int *x[4] و int(*x)[4]راستی آقای bermooda از راهنمایی شما ممنون

seyedof
یک شنبه 13 فروردین 1385, 21:40 عصر
سلام
اوون پرانتز هیچ تاثیری نداره.
ممنون علی

hercules_3d
سه شنبه 15 فروردین 1385, 14:00 عصر
والا به خدا تاثیر داره!!!:گریه:

hercules_3d
سه شنبه 15 فروردین 1385, 16:32 عصر
اقا چیزی که شما میگین با چیزی که من میگم کلی فرق میکنه

mamadgmail
چهارشنبه 16 فروردین 1385, 00:06 صبح
من متوجه نمی شم مشکل شما دقیقا چیه؟؟؟لطفا بیشتر توضیح بدید. اگرپیاده سازی آرایه 2 بعدی رو با Pointer ها می خواین که من کدش رو نوشتم براتون که یک آرایه 10*10 تعریف می کنه حالا مشکل چیه؟؟

hercules_3d
چهارشنبه 16 فروردین 1385, 13:32 عصر
ببینید وقتی من آرایه ای از اشاره گر ها تعریف میکنم مثل int *x[4] میتونم به این شکل یه آرایه ی 4*5 بسازم و فضا برای اون اختصاص بدم :
for (int i=0;i<4;i++)
x[i]=(int *)malloc(5*sizeof(int))
حالا میخواهم یه اشاره گر تعریف کنم که به گروهی از آرایه های یک بعدی 4 عنصری از نوع int تعریف کنم به این شکل int (*x)[4] در واقع یه جوری برعکس اون قبلی حالا میخواهم توسط این تعریف یه آرایه 5*4 بسازم و فضا برای اون اختصاص بدم و میخواهم این اختصاص فضا توسط malloc انجام بدم نه با new جایی که این رو خوندم به این شکل حافظه برای این آرایه دو بعدی اختصاص میده ولی این دستور ارور میده :
*x=(int *)malloc(5*4*sizeof(int))
حالا فهمیدین من چی میگم! لطفا کمک کنید:گریه:

hercules_3d
پنج شنبه 17 فروردین 1385, 12:59 عصر
کسی نیست کمک کنه؟

hercules_3d
شنبه 19 فروردین 1385, 11:32 صبح
کسی نیست کمک کنه؟ والا جای دوری نمیره!

hercules_3d
سه شنبه 22 فروردین 1385, 17:22 عصر
این تن بمیره کمک!!!!!!!!!!