تفاوت بین "char * name" و "char * name" در زبان برنامه نویسی C چیست؟


پاسخ 1:

هیچ تفاوتی نیست.

با این حال ، به نظر من شما باید یک برنامه نویس طولانی مدت C / C ++ / C # باشید

char * نام؛

دلیل این امر این است که شما باید به این واقعیت عادت کنید که نوع داده "name" "اشاره گر به کاراکتر" است. اگر ستاره را کنار "char" قرار دهید ، این نشان می دهد که ستاره بخشی از نوع داده است.


پاسخ 2:

هیچ تفاوتی نیست. این فقط موضوع ترجیح سبک است.

*******************************>

به نظر نمی رسد که بتوانم درباره جواب سیلوین رودریگ اظهار نظر کنم و فکر می کنم پاسخ لازم است زیرا اساساً اشتباه است. برای اینکه * نام یک اپراتور ارجاع دهنده (اپراتور غیرمستقیم) باشد ، عملکرد آن باید دارای یک نوع اشاره گر باشد.

در پیش نویس استاندارد ISO n1570 ، "char *" به عنوان "نوع مشتق شده" (6.2.5 نوع) توصیف شده است.

از n1570:

6.2.5 انواع

- یک نوع اشاره گر را می توان از نوع تابع یا یک نوع شیء که نامیده می شود ، بدست آورد

نوع ارجاع شده یک نوع اشاره گر شیئی را توصیف می کند که مقدار آن یک مرجع ارائه می دهد

به موجودی از نوع ارجاع شده. یک نوع اشاره گر که از نوع ارجاع شده T حاصل می شود

گاهی اوقات به عنوان "اشاره گر به T" گفته می شود. ساخت نوع اشاره گر از a

نوع ارجاع شده "مشتق از نوع اشاره گر" نامیده می شود. یک نوع اشاره گر یک نوع کامل است

نوع شی

6.5.3.2 اپراتورهای آدرس و indirection

محدودیت ها

2 عملکرد اپراتور unary * باید از نوع اشاره گر باشد.


پاسخ 3:

هیچ تفاوتی وجود ندارد ، EXCEPT برای وضعیت زیر. فرض کنید چندین متغیر اشاره گر را تعریف می کنید. مقایسه و تضاد این دو خط:

char * p، * p2، * p3؛ // آنچه را که فکر می کنید انجام دهید. char * p، p2، ​​p3؛ // آنچه شما فکر می کنید انجام نمی دهد.

این دو خط کارهای بسیار متفاوتی دارند. خط دوم در اینجا p را به عنوان متغیر اشاره گر اعلام می کند ، اما p2 و p3 به عنوان نشانگر اعلام نمی شوند بلکه فقط متغیرهای معمولی از نوع char هستند. این از نظر فنی اشتباه نیست (جدا از این واقعیت که متغیرهای نوع char ساده به خصوص قابل اعتماد یا مفید نیستند)؛ این فقط بسیار گمراه کننده است

سبک دوم در بالا - برای نزدیک کردن * * به نام نوع - اغلب در کد ظاهر می شود ، اما این قابلیت را دارد که هنگام اعلام انواع مختلف اشاره گر ، همانطور که در بالا آمده است ، اظهارات گمراه کننده ایجاد کنید.

به هر حال ، راهی برای به دست آوردن اثری وجود دارد که احتمالاً از این خط دوم بالا می خواهید. ابتدا از typedef برای ایجاد نوع اشاره گر استفاده کنید.

typedef char * CPTR؛

اکنون می توانید چندین نشانگر را با کارایی بیشتری اعلام کنید:

CPTR p، p2، ​​p3؛