به نام خدا

سلام خدمت شما دوستان عزیز و هموطنان گرامی!

شاید شما هم توی برنامه نویسی زبان C و C++ متوجه این موضوع شده باشید که برخی توابع علامت * دارن! اگه شما هم میخواهید جواب این سوال رو پیدا کنید با ما همراه باشید!

کلا علامت * در زبان C  و ++C نشونه یک اشاره گر هست!

برای درک بهتر اشاره گر توابع از تابع زیر که خودم نوشتم استفاده میکینم!

char *ali(char *str)
{
	char *strme= str;
	str[0] = '#';
	strme = str;
	return strme;

}

ببینید در تابع بالا هم قبل از ali علامت * گذاشتم و هم قبل از str علامت * گذاشتم!

یعنی الان تابع ما مکان ورودی رو میگیره! یعنی اینکه اگه شما یه رشته به این تابع بدید مکان رشته در حافظه، در متغییر str نگاه داری میشه!

اگه دقت کنید توی خط اول تابع دوباره یک اشاره گر نوشتم که آدرس اون رشته که به تابع داده شده رو توی strme ذخیره کردم! (اینو همینجوری انجام دادم که بیشتر با اینا آشنا بشید)

خط دوم مقدار # رو به جای اولین کاراکتر رشته ورودی قرار میده! اون [0] هم نشون دهنده کاراکتر هم که من 0 گذاشتم یعنی اولین کاراکتر

و در نهایت strme که به رشته ما اشاره میکنه return میشه!

الان اگه علامت * رو از کنار ali حذف کنید. میگه مقداری که میخواید return کنید با خروجی تابع برابر نیست! چون مقدار return یک اشاره گر هست ولی مقدار خروجی تابع اشاره گر نیست!

امیدوارم فهمیده باشید s07

فعلا

یا علی مدد...!