PDA

View Full Version : new delete



scmorfi
یک شنبه 11 دی 1390, 10:48 صبح
با سلام
من می خوام یه آرایه 2 بعدی رو به وسیله پوینتر(اشاره گر) مقدار دهی کنم و از new و free استفاده کنم
می شه یه مثال کوچک واسم بزنید
ممنون

pe32_64
یک شنبه 11 دی 1390, 16:23 عصر
int pp[5][5];
for(int i = 0;i<5;i++)
for(int j = 0;j<5;j++)
pp[i][j] = 10;

int(*p)[5] = (int(*)[5]) new int [5][5];
if(p)
{
for(int i = 0;i<5;i++)
for(int j = 0;j<5;j++)
p[i][j] = pp[i][j];

for(int i = 0;i<5;i++)
for(int j = 0;j<5;j++)
printf("p[%d][%d] = %d\r\n",i,j,p[i][j]);
delete []p;
}

alamate_aoal
یک شنبه 11 دی 1390, 23:04 عصر
سلام
خط 16 کد بالا رو با کد زیر جابجا کن

for( int i=0; i<5; i++ )
delete p[i];

pe32_64
دوشنبه 12 دی 1390, 14:34 عصر
جناب alamate_aoal (http://barnamenevis.org/member.php?103489-alamate_aoal) حداقل کدتون رو چک کنید.
کد اشتباهه و در هنگام اجرا اخطار می گیره.
کد من درسته و به جابجایی هم نیاز نداره.

alamate_aoal
پنج شنبه 15 دی 1390, 16:07 عصر
مرسی:تشویق:
حق با شماست

alamate_aoal
پنج شنبه 15 دی 1390, 16:27 عصر
من از این روش برای ایجاد آرایه دو بعدی پویا استفاده میکنم.
این روش انعطاف بیشتری داره , تعداد ستون های هر سطر میتونه متفاوت باشه(بدون هدر رفت حافظه) :

int row = 5;
int col = 5;
int **matrix = new int*[col];

for( int i=0; i<row; i++ )
matrix[i] = new int[col];

for( int i=0; i<row; i++ )
for( int j=0; j<col; j++ ) {
matrix[i][j] = 0;
printf( "matrix[%d][%d] = %d \n",i ,j ,
matrix[i][j] );
}

for( int i=0; i<row; i++ )
delete []matrix[i];
delete[] matrix;