PDA

View Full Version : فرق بین اشاره گر و عنصر شماره x از آرایه



emad4000
یک شنبه 17 خرداد 1388, 13:27 عصر
می خوام بدونم فرق بین یک متغیر اشاره گر و یک عنصر مشخص از آرایه چیه ؟ مگه نباید یکسان باشن ؟
مشکل اینه که کد اول کار می کنه ، ولی کد دوم نه
WxTreeCtrl1 یه Tree Control ه . می خوام یه ساختار پله ای (پدر و نوادگان) بسازم

کد اول :


wxTreeItemId *i1 = &WxTreeCtrl1->AddRoot("Emad");
wxTreeItemId *i2 = &WxTreeCtrl1->AppendItem(*i1,"Ali");
wxTreeItemId *i3 = &WxTreeCtrl1->AppendItem(*i2,"Reza");
wxTreeItemId *i4 = &WxTreeCtrl1->AppendItem(*i3,"Hasan");


کد دوم :


wxTreeItemId *arr = new wxTreeItemId[size];
arr[0] = &(WxTreeCtrl1->AddRoot("Emad"));
for (i=1;i<size;i++)
{
wxTreeItemId *anItemPtr = &arr[i-1];
arr[i] = & (WxTreeCtrl1->AppendItem(anItemPtr,"Barobax"));
}

tdkhakpur
یک شنبه 17 خرداد 1388, 13:44 عصر
سلام
ببینید شما با کد زیر یک اشاره گر تعریف کرده اید نه چند اشاره گر


wxTreeItemId *arr = ...

در فوق باید اشاره گر رو بصورت یا پویا یا بصورت زیر با اندازه ثابت تعریف کنید تا به نتیجه برسید.


wxTreeItemId *arr[size];
arr[0] =......

موفق باشید.

emad4000
دوشنبه 18 خرداد 1388, 10:01 صبح
در فوق باید اشاره گر رو بصورت یا پویا یا بصورت زیر با اندازه ثابت تعریف کنید ...


مگه این کد من تعریف پویا نیست ؟


wxTreeItemId *arr = new wxTreeItemId[size];

میشه در مورد اینها بیشتر توضیح بدین یا لینکی رو معرفی کنین


ضمنا برنامه من با این تغییر بازم درست کار نمیکنه


wxTreeItemId *arr[50];
arr[0] = &(WxTreeCtrl1->AddRoot("Root"));
for (i=1;i<size;i++)
}
arr[i] = &(WxTreeCtrl1->AppendItem(arr[i-1],"Emad"));
{

فقط Root اضافه میشه، بقیش کار نمی کنه

zoncpp
دوشنبه 18 خرداد 1388, 11:17 صبح
فکر می کنم اگه به صورت زیر تعریف کنی درست بشه

wxTreeItemId *arr = new (wxTreeItemId*)[size];

emad4000
دوشنبه 18 خرداد 1388, 11:49 صبح
فکر می کنم اگه به صورت زیر تعریف کنی درست بشه

wxTreeItemId *arr = new (wxTreeItemId*)[size];
نه دوست عزیز ، اصلا کامپایل نمیشه :


array bound forbidden after parenthesized type-id
try removing the parentheses around the type-id


من تعجب می کنم که گاهی کد اشتباه می نویسم ، ولی کامپایل میشه :اشتباه: :عصبانی++:
خدا نصیب گرگ بیابون نکنه ، جاوا و سی شارپ کی از این مشکلا داشتن ؟
من هزارجور کد رو آزمایش کردم ، یه چیزی که توی همه ی این آزمایش ها خیلی واضح بود اینه که ورودی parent که توی متد AppendItem استفاده میشه اگه یه عنصر از آرایه باشه عمرا نمیشه توی سطوح دوم به بعد Tree عنصر اضافه کرد . ولی اگه یه متغیر معمولی یا اشاره گر باشه کار می کنه
نظر شما چیه ؟ من باید چیکار کنم ؟ آخه داده های من همه تو آرایه اند.

emad4000
دوشنبه 18 خرداد 1388, 12:27 عصر
ممنون از لطف همه دوستان ، بالاخره مشکل حل شد. اشکال از جای دیگه ای بود :لبخند:

این دوتا کد هردوشون درستن :


wxTreeItemId *arr = new wxTreeItemId[size];
// or
//wxTreeItemId arr[1000];
arr[0] = WxTreeCtrl1->AddRoot("Root");
for (i=1;i<size;i++)
{
arr[i] = WxTreeCtrl1->AppendItem(arr[i-1],"Emad");
}




wxTreeItemId **arr = new wxTreeItemId*[size];
// or
//wxTreeItemId arr*[1000];
arr[0] = &(WxTreeCtrl1->AddRoot("Root"));
for (i=1;i<size;i++)
{
arr[i] = &(WxTreeCtrl1->AppendItem(*arr[i-1],"Emad"));
}