PDA

View Full Version : سوال: دریافت اندازه آرایه از ورودی



h.alizadeh
یک شنبه 17 آذر 1387, 13:54 عصر
سلام،

آیا میشه آرایه ای بسازیم که طولش رو از ورودی دریافت کنیم؟؟

اگه آره چطوری؟/

من اینطوری نوشتم ولی خطا گرفته میشه.



int n;
cout<<"Enter bode of array:"; cin>>n;
int a[n];


ممنون

emad_67
یک شنبه 17 آذر 1387, 14:11 عصر
تو همین بخش درباره آرایه داینامیک جستجو کن. زیاد مطرح شده.

h.alizadeh
یک شنبه 17 آذر 1387, 21:51 عصر
سلام، مرسی از لطفت سرچ کردم

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



#include<iostream.h>
#include<string.h>
#include<conio.h>
#include<stdio.h>
void main()
{
clrscr();
int s=0, n=5;
int *a = new int[n];
for(int i=0;i<n;i++) {
cin>>a[i];
}
cout<<a[2];
delete []a;
cout<<a[2];
getch();
}



فقط یک چیز من وقتی delete []a; رو مینویسم و خط بعدش میرم دوباره مثلا a[2] رو مقدارش رو استفاده میکنم. استفاده میشه!!!!!!!! یعنی مثلا مقدارش رو با Cout نمایش میده! خب مگه پاک نشده؟ پس چرا مقدار ش نمایش داده میشه؟ میشه یک کاری کنیم بعد از دیلیت مقادیر a از بین بره؟؟ الان درست این دیلیت چی رو پاک کرده؟!

emad_67
یک شنبه 17 آذر 1387, 23:09 عصر
مقداری که بعد از delete چاپ میشه دیگه مقدار عدد داخل آرایه نیست و یک عدد بی ربط هست که به خاطر اشاره a به جایی از حافظه که دیگه مشخص نیست از چه نوعی هست به وجود میاد.

h.alizadeh
دوشنبه 18 آذر 1387, 20:13 عصر
ممنون

ولی خب همون مقدار رو درست نشونمیده یعنی همون مقداری که قبل از پاک کردن ارایه در a[2]بود رو نشون میده.

ولی ممنون

Exception
دوشنبه 18 آذر 1387, 20:29 عصر
ممنون

ولی خب همون مقدار رو درست نشونمیده یعنی همون مقداری که قبل از پاک کردن ارایه در a[2]بود رو نشون میده.

ولی ممنون
تا وقتی اون مکان حافظه به پروسس دیگه ای تخصیص داده نشده و چیزی روش نوشته نشده، همون مقدار میمونه.
اما تو در هر صورت بعد از delete دیگه نباید ازش استفاده کنی.