Яка різниця між "ім'ям char *" та "ім'ям char *" у мові програмування C?


Відповідь 1:

Немає різниці.

Однак, на мою думку, як давній розробник C / C ++ / C # ви повинні використовувати

char * ім'я;

Причиною цього є те, що вам слід звикнути до того, що тип даних "name" є "покажчик на знак". Розміщення зірочки поруч із "char" звертає увагу на той факт, що зірочка є частиною типу даних.


Відповідь 2:

Різниці немає. Це просто питання переваги стилю.

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

Я не можу коментувати відповідь Сільвейн Родріг, і я думаю, що вона потребує відповіді, оскільки вона принципово невірна. Щоб * ім'я було оператором перенаправлення (оператором непрямості), його операнд повинен мати тип вказівника.

У проекті стандарту ISO n1570 "char *" описаний як "похідний тип" (6.2.5 типи)

Від n1570:

6.2.5 Види

- Тип вказівника може бути похідний від типу функції або типу об'єкта, який називається

тип посилання Тип вказівника описує об'єкт, значення якого надає посилання

до сутності посиланого типу. Тип вказівника, похідний від посиланого типу T

іноді називається "вказівник на T". Побудова типу вказівника з а

тип посилання називається "'походження типу вказівника". Тип вказівника - це повна

тип об'єкта.

6.5.3.2 Оператори адреси та опосередкування

Обмеження

2 Операнд одинарного * оператора має тип вказівника.


Відповідь 3:

Немає різниці ВИКЛЮЧНО для наступної ситуації. Припустимо, ви визначаєте кілька змінних вказівника. Порівняйте та порівняйте ці два рядки:

char * p, * p2, * p3; // Це робить те, що ви думаєте, що робить.
char * p, p2, p3; // Це не робить те, що ви думаєте, що робить.

Ці два рядки роблять дуже різні речі. Другий рядок тут оголошує p як змінну вказівника, але p2 і p3 не оголошуються покажчиками, а лише звичайними змінними типу char. Це технічно неправильно (крім того, що прості змінні типу char не є особливо надійними чи корисними); це просто дуже вводить в оману.

Другий стиль, наведений вище - для наведення * ближче до імені типу - часто з'являється в коді, але має можливість створювати оманливі декларації при оголошенні кількох змінних вказівників, як показано вище.

До речі, є спосіб досягти ефекту, який, мабуть, бажаний тим другим рядком вище. Спочатку використовуйте typedef для створення типу вказівника.

typedef char * CPTR;

Тепер ви можете оголосити кілька покажчиків ефективніше:

CPTR p, p2, p3;