مشاهده نسخه کامل
: Array with Using Pointer
با سلام به همه
مي خواستم بدونم 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 اندازۀ ستون ها هست.
ولی چون برنامه بالا به درستی برای هر ردیف ستون ها را نمی سازد، در نتیجه در حلقۀ دومی امکان بروز خطا هست.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اشتباه است. باید مچین چیزی باشد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و چون برخلاف عکس بالا ردیف ها به یک آرایه از ستون ها اشاره نمی کنند و ممکن است به هر جای حافظه اشاره کنند (چون مقداردهی نشده اند) در نتیجه ممکن است آنجا این مشکل به وجود آید.
سلام
خيلي ممنون...بله حرف شما كاملا درسته
اما اين كدي هم كه نوشتيد 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:
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.