اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

این کد چرا کار می‌کنه؟ نباید اخطار داشته باشه؟

0 امتیاز
261 نمایش
#include <iostream>

int main()
{
    int x = 3;
    char y[] = "37";
    char* z = y + x;
    std::cout<<*z;
}
هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده شنبه ۱۰ فروردین ۱۳۹۲ در C++ توسط prodo  
بازتگ شده سه شنبه ۱۸ تیر ۱۳۹۲

1 پاسخ

0 امتیاز

مشکل حل شد. y اشاره‌گری به ابتدای آرایه‌ی کاراکتری y است. بنابراین y + int می‌شه اشاره‌گری کاراکتری به یه خانه از حافظه، دقیقاً به تعداد مشخص بیشتر از y. بنابراین y+x می‌شه اشاره‌گری به x خانه بعد از ابتدای آرایه. اگه خط زیر رو تعویض کنیم

char y[] = "37456";

چیزی که چاپ می‌کنه کاراکتر 5 هست. چون آدرس ۳ خانه بعد از ابتدای آرایه آدرس کاراکتر '5' هست.

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده دوشنبه ۶ خرداد ۱۳۹۲ توسط prodo