Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
11 / 7 / 4
Регистрация: 25.03.2019
Сообщений: 140
1

Положение звёздочки

26.08.2019, 13:24. Показов 1282. Ответов 10
Метки нет (Все метки)

Когда я ещё начинал учить С++, то при объявлении указателя это было примерно так:
C++
1
2
int d = 5;
int *p = &d;
Так было в руководстве. Но со временем я начал замечать что люди пишут так:
C++
1
2
int d = 5;
int* p = &d;
Для компилятора положение звездочки, конечно, не важно, но я думаю что первый вариант привлекательнее.
И все же, почему все пишут второй вариант?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.08.2019, 13:24
Ответы с готовыми решениями:

Нарисовать полосатый прямоугольник - одна линия звёздочки, вторая процентики ,звёздочки, процентики и т.д.
Нарисовать полосатый прямоугольник - одна линия звёздочки, вторая процентики ,звёздочки, процентики...

Строка: Преобразовать строку, удалив каждый символ звёздочки и повторив каждый символ, отличный от звёздочки
Дана строка. Преобразовать её, удалив каждый символ звёздочки и повторив каждый символ, отличный от...

Цыкл (звездочки)
Здраствуйте. Мне задали задание нарисовать с помощью цыклов вот такую штуку ...

Расставить звездочки в строке
есть код: #include <iostream> #include <conio.h> #include <stdio.h> #include <cmath> #include...

10
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
26.08.2019, 15:23 2
Лучший ответ Сообщение было отмечено Darkfor как решение

Решение

Цитата Сообщение от Darkfor Посмотреть сообщение
Для компилятора положение звездочки, конечно, не важно, но я думаю что первый вариант привлекательнее.
И все же, почему все пишут второй вариант?
Просто так. И далеко не все.
Здесь звёздочка относится не к названию типа, а к имени переменной, поэтому я тоже предпочитаю первый вариант.
1
858 / 447 / 112
Регистрация: 06.07.2013
Сообщений: 1,493
28.08.2019, 14:50 3
Открою тебе секрет - можно еще так
C++
1
int * p = &d;
0
11 / 7 / 4
Регистрация: 25.03.2019
Сообщений: 140
28.08.2019, 15:10  [ТС] 4
Если ты не заметил это:

Для компилятора положение звездочки, конечно, не важно, но...
То говорю второй раз, я вкурсе и это для меня НЕ секрет.
0
"C with Classes"
1485 / 1287 / 485
Регистрация: 16.08.2014
Сообщений: 5,413
Записей в блоге: 1
28.08.2019, 15:17 5
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Здесь звёздочка относится не к названию типа, а к имени переменной, поэтому я тоже предпочитаю первый вариант.
а я понимаю что звездочка относится как раз к имени типа, то есть тип не int, а int*, то есть указатель на целое это не есть целое и это совершенно разные типы.

Добавлено через 2 минуты
еще аргумент в пользу что типы записываются так: static_cast<int*>(...);
1
15040 / 8059 / 1940
Регистрация: 30.01.2014
Сообщений: 13,642
29.08.2019, 08:50 6
Цитата Сообщение от _stanislav Посмотреть сообщение
а я понимаю что звездочка относится как раз к имени типа
Семантически она относится к имени типа. А синтаксически в этой записи - к имени переменной. Именно поэтому приходится писать так:
C++
1
int * p1, * p2;
а не так:
C++
1
int * p1, p2;
2
"C with Classes"
1485 / 1287 / 485
Регистрация: 16.08.2014
Сообщений: 5,413
Записей в блоге: 1
29.08.2019, 09:16 7
Цитата Сообщение от DrOffset Посмотреть сообщение
а не так:
лучше так;
C++
1
2
int* p1 {};
int* p2 {};
1
DrOffset
29.08.2019, 11:21
  #8

Не по теме:

Цитата Сообщение от _stanislav Посмотреть сообщение
лучше так;
Это да, но речь же не об этом :)

0
11 / 7 / 4
Регистрация: 25.03.2019
Сообщений: 140
29.08.2019, 11:24  [ТС] 9
Цитата Сообщение от _stanislav Посмотреть сообщение
int* p1 {};
int* p2 {};
Это как? Указатели с блоками кода?
Я ещё такого не видел...
0
15040 / 8059 / 1940
Регистрация: 30.01.2014
Сообщений: 13,642
29.08.2019, 12:01 10
Цитата Сообщение от Darkfor Посмотреть сообщение
Это как? Указатели - функции?
Нет конечно. Это uniform initialization из C++11.

https://isocpp.org/wiki/faq/cp... iform-init

Эквивалентно вот такому:
C++
1
2
3
4
typedef int * int_ptr;
 
int * p1 = int_ptr();
int * p2 = int_ptr();
Ну или (в данном случае) просто:
C++
1
2
int * p1 = 0;
int * p2 = 0;
1
"C with Classes"
1485 / 1287 / 485
Регистрация: 16.08.2014
Сообщений: 5,413
Записей в блоге: 1
29.08.2019, 14:48 11
Цитата Сообщение от DrOffset Посмотреть сообщение
int * p1 = 0;
Цитата Сообщение от DrOffset Посмотреть сообщение
typedef int * int_ptr;
или так:
C++
1
int * p1 = nullptr;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2019, 14:48

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Звёздочки в двумерном массиве
Дано нечетное число n, не превосходящее 15. Создайте двумерный массив из n×n элементов,...

надо вывести звездочки вертикально
#include &lt;iostream&gt; using namespace std; int main() { int t=0; int chisla=0; int h=0; ...

Звездочки вместо символов пароля
как сделать чтобы вместо символов пароля на экран выводились звездочки? #include &quot;stdafx.h&quot;...

Вывести звёздочки. Консольное приложение
Нужно запросить у пользователя какое-то число. Например 3. Вывести такое : *** -** --* ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.