C++
Відкрити в Telegram
گروه آموزش زبان برنامه نویسی سی، سی پلاس پلاس خدمت شما دوستداران گرامی با امید بهره بردن و موفقیت شما همراهان🌹 ممنون که همراه ما میشین و ما رو حمایت میکنین 🌹 https://t.me/ourcpp
Показати більше2 130
Підписники
-224 години
-57 днів
-4730 день
Архів дописів
2 130
یک منبع جالب در رابط Libpcap در زبان C
خب کار Libpacp چی هست دقیقا ؟ 🤔
این لایبرری برای Network Packets Capturing هست ، بطور ساده تر ، شنود پکت های ارسالی در شبکه ، کاربرد های خیلی زیادی میتونه داشته باشه ، اما عمده ترینش ، حملات MITM یا مرد میانی هست ، که میتونید با شنود پکت های شبکه ، کوکی 🍪 ها و سشن های تارگت رو بدست بیارید و وارد اکانت های فرد شوید ‼️
URL🔗
➖➖➖➖➖➖
🆔 @cppFarsi
2 130
سلام ، گروه برنامه نویسی
لینک گروه سی ، سی پلاس پلاس :
👇👇👇👇
https://t.me/ourcpp
لینک گروه سی شارپ :
👇👇👇👇
https://t.me/ourcsharpp
لینک گروه پایتون :
👇👇👇👇
https://t.me/pygroupp
گروه چت :
👇👇👇👇
https://t.me/engineeringcomputerr
کانال جزوات و ...
👇👇👇👇
https://t.me/chanelcomputer
لینک گروه جاوا :
👇👇👇👇
https://t.me/ourjavaaa
لینک گروه طراحی سایت / فرانت اند :
👇👇👇👇
https://t.me/ourvebb
لینک گروه بک اند :
👇👇👇👇
https://t.me/ourbackend
لینک گروه هوش مصنوعی:
👇👇👇👇
https://t.me/ourAIgap
لینک گروه لینوکس :
👇👇👇👇
https://t.me/ourLinux
لینک گروه شبکه :
👇👇👇👇
https://t.me/our_Net_work
لینک گروه php :
👇👇👇👇
https://t.me/ourphpp
👨💻👩💻
2 130
داده ساختار ها ( Data structures ) را میتوان با اپراتور '=' برابری سازی کرد و المنت های یکی را در دیگری کپی کرد. این کار اما برای آرایه ها متفاوت است. ساده ترین روش آن این است که در حافظه heap آن را ذخیره کرد :
int* arr1 = new int [ 500 ];
int* arr2 = new int [ 500 ];
arr1 = arr2;
جدا از این میتوان این کار را به کمک پوینتر ها انجام داد :
const int sz = 500;
int arr1 [ sz ] = { ... };
int (*arr2) [ sz ] = &arr1;
به سه روش زیر میتوان پوینتر آرایه arr2 را نمایش داد :
cout << *arr1 << endl;
cout << arr1 << endl;
cout << arr1 [0] << end;
برای دسترسی به ایندکس i ام این آرایه، به این شیوه انجام میشود :
cout << *(*arr2 + i );
برای اینکه از طریق یک پوینتر به این آرایه دسترسی پیدا کنیم به این روش عمل میکنیم :
int* p = &(*arr2);
یا این روش :
int* p = arr2;
و برای گرفتن سایز آرایه، به این روش :
cout << sizeof ( *arr2 ) / sizeof ( *(*arr2 ) );
منابع :
GeeksForGeeks
Stack Overflow
#array_assignment #pointer
➖➖➖➖➖➖
🆔 @cppFarsi
2 130
نحوه گرفتن پوینتر برخی متغیر ها متفاوت است. بطور مثال :
char* x = "ab2";
char x [ ] = { '2', 'd', '#' };
char* x = new char [ 3 ];
در این صورت، به این شیوه پوینتر آن ها را میگیریم :
cout << static_cast <void*> (x);
یا روشی کوتاه تر :
cout << (void*) (x);
در صورتی که خواستیم از تابعی non-void بگیریم نیز مشابه این روش عمل میکنیم :
char* getAdd ()
{
char* x = new char [ 2 ];
return x;
}
int main ()
{
char* add = getAdd ();
cout << (void*) (add);
return 0;
}
#pointer
➖➖➖➖
@cppFarsi
2 130
پوینتر ها، و به فارسی، نشانه گر ها مفهومی در ++C هستند که مربوط به آدرس ذخیره سازی متغیر ها در memory میشود. هر متغیری که تعریف میشود، یک آدرس در حافظه برنامه ثبت میکند، به عنوان شناسنامه و هویت آن متغیر. برای گرفتن آدرس یک متغیر از علامت ampersand ( & ) استفاده میشود. مثال :
cout << &x;
برای ذخیره سازی آدرس یک متغیر، از پوینتر ها استفاده میشود که با علامت ستاره ( * ) تعریف میشوند. مثال :
int* ptr = &x; // x = 24
نکته مهم این است که data type پوینتر متناظر با data type آن مقداری است که به آن اشاره میشود :
string* ptr = &x; // x = "abc"
همچنین روی این پوینتر ها میتوان یکسری اعمال ریاضی هم انجام داد :
جمع، تفریق، مقایسه دو پوینتر، تفاضل دو پوینتر.
تمامی این عملگر ها منحصرا روی آرایه ها میتوانند انجام شوند. اما آدرس یک آرایه به چه صورت ذخیره میشود ؟
به طور پیشفرض، آدرس یک آرایه، آدرس اولین المنت درون اون آرایه هست. میتوان آدرس یک آرایه را به شیوه مشابه موارد قبل تعریف کرد :
int *ptr = arr;
با این تفاوت که برای متغیر arr علامت ampersand استفاده نمیشود ( چرا ؟ ).
همچنین ما نمیتوانیم آرایه ای از پوینتر ها داشته باشیم ( چرا ؟ ).
مثال :
int arr [ ] = { 2, 3 };
cout << ptr << " >> " << *ptr;
// output : 0x97645ba0 >> 2
روشی دیگر بعنوان جایگزین برای این کار موجود است :
cout << &ptr [ 0 ] << " >> " << ptr [ 0 ];
ما همچنین میتوانیم با به کار بری عملگر های ریاضی اشاره شده ( جمع و تفریق ) مشخص کنیم که پوینتر آرایه به کدام یک از المنت های آرایه باید اشاره کند ؟
به این نحو :
int* ptr = arr;
ptr ++;
این یعنی باید المنت بعدی را به عنوان پوینتر یک آرایه در نظر بگیرد.
ما همچنین میتوانیم دو پوینتر را از هم کم کنیم ( اما نمیتونیم با هم جمع کنیم ) :
cout << &arr [ 0 ] - &arr [ 2 ];
نتیجه میشود منفی دو، زیرا حاصل این عملگر برابر است با تفاضل ایندکس آن دو :
&arr [ i ] - &arr [ j ] = i - j
نتیجه مقایسه دو پوینتر هم یک مقدار boolean هست :
&arr [ 2 ] > &arr [ 1 ]
جوابش true هست، چون ایندکس سمت راستی از ایندکس سمت چپی کوچکتر است.
#pointer #pointer_arithmetic
منابع :
GeeksForGeeks
cplusplus
2 130
سلام ، گروه برنامه نویسی
لینک گروه سی ، سی پلاس پلاس :
👇👇👇👇
https://t.me/ourcpp
لینک گروه سی شارپ :
👇👇👇👇
https://t.me/ourcsharpp
لینک گروه پایتون :
👇👇👇👇
https://t.me/pygroupp
گروه چت :
👇👇👇👇
https://t.me/engineeringcomputerr
کانال جزوات و ...
👇👇👇👇
https://t.me/chanelcomputer
لینک گروه جاوا :
👇👇👇👇
https://t.me/ourjavaaa
لینک گروه طراحی سایت / فرانت اند :
👇👇👇👇
https://t.me/ourvebb
لینک گروه بک اند :
👇👇👇👇
https://t.me/ourbackend
لینک گروه هوش مصنوعی:
👇👇👇👇
https://t.me/ourAIgap
👨💻👩💻
2 130
سلام دوستان
طبق درخواست عزیزانی که گروه هوش مصنوعی یا سوال هایی مربوط به این حوزه رو داشتن .
تصمیم گرفتیم گروه هوش مصنوعی هم تشکیل بدیم .
https://t.me/ourAIgap
