ورود

نسخه کامل مشاهده نسخه کامل : Array with Using Pointer



avot
17-07-2007, 23:22
با سلام به همه
مي خواستم بدونم runtime error اين برنامه چيه؟

#include<iostream>
using namespace std;
int main()
{
int k,j,m,n;
cin>>m>>n;

int **p=new int *[m];
for(int i=0;i<m;i++)
int *p=new int [n];

for(j=0;j<m;j++){
for(k=0;k<n;k++){
cin>>p[j][k];}
}

return 0;
}

با تشكر

hamidreza_buddy
18-07-2007, 13:59
برای allocate کردن آرایه های چند بعدی در c باید نکات موجود در این صفحه را رعایت کرد:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
همون طور که می بینید یک آرایۀ دو بعدی اینجوریه. در بالا m تعداد ردیف ها و n اندازۀ ستون ها هست.

ولی چون برنامه بالا به درستی برای هر ردیف ستون ها را نمی سازد، در نتیجه در حلقۀ دومی امکان بروز خطا هست.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اشتباه است. باید مچین چیزی باشد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

و چون برخلاف عکس بالا ردیف ها به یک آرایه از ستون ها اشاره نمی کنند و ممکن است به هر جای حافظه اشاره کنند (چون مقداردهی نشده اند) در نتیجه ممکن است آنجا این مشکل به وجود آید.

avot
18-07-2007, 17:19
سلام
خيلي ممنون...بله حرف شما كاملا درسته
اما اين كدي هم كه نوشتيد error داره
variable-sized object `p' may not be initialized

hamidreza_buddy
22-07-2007, 12:58
اون لینکه رو یه نگا بنداز. کد سی همین کار توش هست:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

hadi_joulaee
29-07-2007, 11:48
برنامتو تصحیح کردم.
اینم سورس بدون مشکل (البته با کمی تغییر جزئی، اضافه کردن چند کد برای چاپ کردن آرایه):




برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



موفق باشی:10::31:

hadi_joulaee
29-07-2007, 12:54
این عکسی که برای سورس بالا طراحی کردم شاید به دردت بخوره.
این عکس چگونگی آدرس های خونه های آرایه ای رو که allocate کردی نشون میده



[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

اگه بازم مشکلی داشتی بگو شاید تونستیم با همکاری برو بچه های فاروم حلش کنیم.:31: