1 | |||||||||||||||||||||
Struct и всё что с этим связанно13.06.2019, 19:28. Показов 2241. Ответов 38
Метки нет (Все метки)
Добрый день.
вот это валидная конструкция
Добавлено через 5 минут И такой вопрос после объявления как указанно выше делаем такой вызов findMulti(t, 1); но: почему если я объявляю как вариант 1 то могу сделать так без ошибки компилятора
cannot convert ‘MultiTarget’ to ‘MultiTarget*’ for argument ‘1’ to ‘int findMulti(MultiTarget*, int)’
0
|
13.06.2019, 19:28 | |
Ответы с готовыми решениями:
38
Как можно сделать такое? (Автоматическое нажатие клавиш и все что с этим связанно) Vcredist x64 Visual C++ , и все что с этим связанно Создание графических интерфейсов и все что с этим связанно Все что связанно с IP адресом |
6105 / 3460 / 1405
Регистрация: 07.02.2019
Сообщений: 8,790
|
|||||||||||
13.06.2019, 19:29 | 2 | ||||||||||
если перенести это в тело функции, то можно
или
1
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
|
|
13.06.2019, 19:45 | 5 |
В варианте 3 у тебя не массив в качестве глобальной переменной, а просто глобальная переменная. Естественно что-либо производить с переменной как с массивом нельзя, до тех пор пока не возьмёшь её адреса.
2
|
6105 / 3460 / 1405
Регистрация: 07.02.2019
Сообщений: 8,790
|
|
13.06.2019, 19:54 | 6 |
Может потому, что присвоение это некая операция, выполняемая процессором и следовательно ему нужны инструкции?
Добавлено через 5 минут Я к тому, что присвоение это не инициализация(хотя инициализация глобальных объектов это тоже могут быть инструкции, выполняемые при запуске кода), т.е. должен быть определен момент времени, когда и место в коде, где это происходит.
1
|
14.06.2019, 12:43 [ТС] | 7 |
ок с этим понял. потому что посути то была не инициализация а присвоение. НО как тогда отличить инициализацию от присвоения в не тела функции ? (на рабоче-крестьянском)
я понимаю так . как только впервые нам встречается переменная в нетела функции это и есть инициализация и в этот же момент можно ей присвоить чтото. а вариант 2 - первый раз t встречается как обжект нейм после скобки до точка-запятая и мы там ничего не присвоили а пытались это сделать отдельной строкой и компилятор считает что инициализация уже прошла и это уже присвоение. правильно я понял ? Добавлено через 22 минуты я вас понял и теперь я понял что там произошло .... но А) я воспринимал структуру так и так как маасив (как минимум чтото вроде массива) ведь мы можем заполнить объект структуры как { {}, {}, {} и тд} и объявлять как [n] что же такое структура/как её воспринимать/понимать? Б) в варианте 3 просто переменная а не массив не потому что я так захотел а потому что компилятор.... ага, сделал обжект нейм t[1]; и получился массив, сейчас понял. ...НО получается обжект нейм при инициализация } object name; это не только имя типа структыры а может быть абсолютной любой тип - типа структуры ? как это ? что это ? ну любой не знаю как, а как минимум получилось пока три варианта: } t; } t[1]; } *t; хм интересно девки пляшут.
0
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
|
|||||||||||||||||||||
14.06.2019, 12:52 | 8 | ||||||||||||||||||||
Выражение
Инициализация - процесс происходящий в переменной при обработке объявления этой переменной после выделения для неё памяти. Присваивание - процесс изменения содержимого уже инициализированной переменной. В процессе инициализации у переменной вызывается конструктор (если он не определялся, используется сгенерированный по-умолчанию), а в процессе присваивания - оператор присваивания.
1
|
14.06.2019, 14:00 [ТС] | 10 |
а как еще можно и так далее ?
Добавлено через 2 минуты и такой вопрос: доступ к переменным в обоих этих случаях одинаковый ? t.len например, подходит для обоих ? t - > len и так тоже можно ? еще както можно?
0
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
|
||||||
14.06.2019, 15:09 | 12 | |||||
К полям переменных обращаются с помощью "." (t.len), к полям указателей на переменные обращаются с помощью "->" (t0->len), для доступа к элементам массива нужно вначале определить, к какому элементу обращаемся и далее с этим элементом работаем аналогично переменной (t2[5].len)
1
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
|
|
15.06.2019, 13:52 | 14 |
Равно указателю на место в памяти, следующее после места со структурой MultiTarget, на которое указывает targets .
Если targets указывает на массив MultiTarget, то указатель будет на следующий элемент. Если targets указывает на отдельно стоящий - то полученный указатель нельзя будет никак использовать (в плане работы с его полями или разыменовывания) т.к. указывает на невыделенную приложению память, операционная система может после этого приложение выкинуть.
0
|
18.06.2019, 14:21 [ТС] | 15 |
объясните плиз что означает ++t->str
в выше обозначеном цикле, куда мы передаем линк на массив MultiTarget t->str печатает OK, а ++t->str печатает К я бы понял еще t->str++ чтобы печатало К [кстати t->str++ почемуто ничего не изменяет , также печатает всю строку как и t->str] ++t я понимаю должен смещать указатель на следующий элемент. мы как раз так цикл for перебираем а такая кокнструкция что делает t++->str++ ?
0
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
|
||||||
18.06.2019, 14:43 | 16 | |||||
Почитай про порядок операций. Означает
++(t->str) Добавлено через 7 минут Ибо ++ префиксный имеет приоритет ниже, чем оператор -> https://en.cppreference.com/w/... precedence Добавлено через 4 минуты приоритет у них всех равный, так что будет
1
|
24.06.2019, 13:39 [ТС] | 17 | ||||||||||
спасибо.
друзья такой вопрос а нужно ли вызывать деструктор и/или удалять структуру? но созданную не через new (эту то понятно нужно) имею структуру
0
|
6105 / 3460 / 1405
Регистрация: 07.02.2019
Сообщений: 8,790
|
|
24.06.2019, 13:44 | 18 |
нет не нужно (ну разве что вы свой аллокатор пишите)
Ваша функция возвращает bool
1
|
24.06.2019, 15:12 [ТС] | 19 | ||||||||||
спасибо
а зачем люди используют typedef применительно к структурам если
?
0
|
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
|
|||||||||||
24.06.2019, 15:18 | 20 | ||||||||||
alexbmd, в языке Си при определении структуры так:
Все заголовочные файлы, которые совместимы с Си, используют этот прием. как правило.
0
|
24.06.2019, 15:18 | |
24.06.2019, 15:18 | |
Помогаю со студенческими работами здесь
20
Геймдев и всё, что с ним связанно Object[] и все что с ним связанно После установки Windows 7 не заходит в mail.ru и все что связанно с ним Рост и всё, что с этим связано Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |