زبان C
سلام
دو هفته ی اخیر دوبار فهمیدم که هنوز که هنوزه زبون C را کامل بلد نیستم.
float c[10];
float* ptr_1;
float* ptr_2;
ptr_1 = c;
ptr_2 = &c;
شاید تعجب داشته باشه، شاید هم نه. ولی ptr1 == ptr2 هست و برای اشاره به یک آرایه میشود از جفتشان استفاده کرد.
مورد دوم هم این هست که فکر میکردم دو structure رو نمیشود به همدیگر assign کرد و کمی درست است ولی نه الزاما. assign کردن دو structure شبیه memcpy میماند و در حالتی که در structure ها آرایه هایی با ابعاد متفاوت نباشند کاملا شدنی است.
بعد از این برای این که بار دیگر به خودم ثابت کنم که این زبان پایان بسیار دوری دارد، وارد Github شدم و کد زبان cpython را کمی مطالعه کردم تا به خود دیگر جرات ندهم که بگویم C میدانم.
- ۰۱/۰۸/۱۹
هر دو مورد برام تازه بود .
مورد دوم رو منم فک میکرم نمیشه هرچند هیچوقت تست نکردم .
ولی شبیه مورد اولو تو پوینتر های توابع برخورده بودم بهش . درواقع اگه بیایم یه پوینتر تایپ از یک تابع تعریف کنیم میتونیم رفرنس اون تابع رو بدونه گذاشتن علامت & قبلش بدیم به پوینتره . این حالت با گذاشتنش هیچ فرقی نداره
همچنین وقتی میخوایم از طریق اون پوینتره ، تابع رو فراخونی کنیم لزوما نیازی نیست قبلش علامت دیرفرنس (*) بزاریم .
پیچیدگی زیادی داره سی ولی بازم این پیچیدگی هارو یاد میگیری و حال میکنی وقتی میبینی داری ازشون بهره میگیری تو کدت