سلام.
این کد ساده رو وقتی می نویسم تو خروجی a رو یه عدد عجیب قریب میده،هم با ویژوال c++ امتحان کردم هم با codeblocks.آخه چرا؟
[PHP]#include <iostream>
using namespace std;
int main()
{
int a=0;
char str[]=" ";
cin>>str;
cout<<a;
return 0;
}
[/PHP]
Printable View
سلام.
این کد ساده رو وقتی می نویسم تو خروجی a رو یه عدد عجیب قریب میده،هم با ویژوال c++ امتحان کردم هم با codeblocks.آخه چرا؟
[PHP]#include <iostream>
using namespace std;
int main()
{
int a=0;
char str[]=" ";
cin>>str;
cout<<a;
return 0;
}
[/PHP]
وقتی متغیری رو تعریف می کنیم متغیرها به ترتیب از پایین به بالا و از راست به چپ در حافظه قرار میگیرند.
طبق تعریف شما هر خونه از حافظه رو اگر یک بایت فرض کنیم ابتدا 2 بایت به Str میرسه که خونه اول و دومو اشغال میکنه و 2 بایت هم به a که خونه سوم و چهارم رو اشغال میکنه.کد:
int a=0;
char str[]=" ";
تا الان که مشکلی نیست
حالا شما فرض کن رشته ی Alireza رو وارد کردی این رشته که وارد کردی از محدوده خودش خارج میشه و چون a بعد از str قرار داره L در خونه سوم و R در خونه چهارم قرار می گیره و اون رقم عجینی که میبینی همین دو حرف هستند که به integer تبدیل شدن.
شما str رو درست تعریف کن تا خونه های حافظه برای رشته ات رزرو بشن .
یا بهترین کار استفاده از اشاره گره تا به همون مقداری که وارد میشه فضا اختصاص بده!
اولا قرض از این پستم بیشتر تشکره چون واقعا این مسئله ذهنم رو بدجوری درگیر کرده بود و با کمک شما لااقل فهمیدم مشکل کجا بوده.بعدشم،در مورد اون تیکه آخری که گفتید از اشاره گر استفاده کنم،یه منبعی چیزی معرفی کنید یا اگه زحمتی نیست یه توضیح مختصری میدید.تا حدی درباره اشاره گرها می دونم ولی در مورد کارکردش تو این زمینه نه...
بازم ممنون:11:
کد:http://www.hpkclasses.ir/Courses/cpp/cpp0900.html#a2