# Native Code > برنامه نویسی با C > برنامه نویسی با زبان C و ++C >  ارایه دوبعدی پویا به زبان c     فوری

## **MR**

سلام
جناب salar cppخدمتتون عرض کنم که بنده نه تنها تو این سایت دنبال جواب سوالم گشتم بلکه خیلی از سایتهای دیگه را هم سر زدم ولی جوابم نگرفتم
سوال من اینه:
تعریف ارایه دو بعدی در c,مقدار دهی اولیه دادن به ان و نیز دسترسی به تک تک خانه های این ارایه؟

----------


## tdkhakpur

int a[4][4]={
                    {1, 2,5, 7},
                    {12, 42,65, 17},
                    {32, 62,45, 27},
                    {15, 92,51, 70}
                  };
 int k;
 k = a[0][0];

----------


## **MR**

سلام
ارایه پویا میخواهم نه ایستا

----------


## ali zi zeperto

int **array = new int *[row_size];
for(int i = 0 ; i < row_size ; i++)                    
        array[i] = new int[col_size];

----------


## **MR**

new برای cpp . من در c   با دستور mallocمشکل دارم

----------


## tdkhakpur

int **array =  (int **)malloc(row_size*4);
for(int i = 0 ; i < row_size ; i++)                    
       array[i] = (int *) malloc(sizeof(int));

----------


## **MR**

سلام

جناب tdkhakpur چند تا سوال دارم:

در خط اول تعریف عدد 4 برای چیه؟
و برای مقدار دهی اولیه به این ارایه دو بعدی باید چی نوشت؟
چون من به این صورت مقداردهی میکنم ولی خروجی مورد نظر را نمیگیرم

for(i=0;i<row;i++)
for(j=0;j<col;j++)
{
a[i][j]=0;
و نیز برای خواندن و چاپ کردنش ؟

----------


## tdkhakpur

خب عدد چهار نشان دهنده اندازه يك متغيير از نوع اشاره گره كه براي دريافت حافظه براي row_size تعداد آرايه لازم هست.
مقدار دهي بصورت زير ميتواند باشد.
 
*array[i] = 10;

در فوق i كوچكتر از row_size بايد باشد.

----------


## **MR**

سلام

 2 تا سوال دارم: 
1-  نحوه خواندن و چاپ این ارایه را کامل برام توضیح بدید
2-  امکانش هست که به سطر و ستون با هم دسترسی داشته باشم
اخه من برای ضرب دو ماتریس به سطر و ستون با هم نیاز دارم مثلا
*array[i][j]=0;
البته این دستور اشکال داره

----------


## tdkhakpur

خوب ببينيد ميتوانيد با عمل رياضي يك آرايه تك بعدي را هم به روش دو بعدي تقاضا كنيد.مثلا
اگر طول يك سطر برابر row_size با iو j ميتوانيد بصورت زير عمل كنيد.
 
*array[row_size*j+i] = 10;

در فوق نبايد row_size*j+i بزرگتر از طول آرايه باشد.

----------


## **MR**

سوال اولم چی؟

یعنی برای دسترسی به سطر اول ستون دوم این درسته؟
*array [row_size*1+2]=5;

----------


## tdkhakpur

نه از صفز شروع ميشه.
 
*array [row_size*0+1]=5;

خوبي مشكلي برا خواندن و چاپ ندارد.
 
cin >>>*array [row_size*0+1];
cout<<*array [row_size*0+1];

----------

