Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
5 / 5 / 1
Регистрация: 15.12.2015
Сообщений: 51

Действия в глобальной области

15.08.2019, 13:00. Показов 2438. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Скажите, пожалуйста, почему в глобальной области нельзя работать также, как в локальной (в той же функции main)?
Уточняю.

1) Почему нельзя сначала определить глобальную переменную, а инициализировать её уже на следующей строчке (инициализировать получается либо сразу при определении, либо внутри другой функции)?

2) Почему, если определить какую-либо пользовательскую функцию, то нельзя сразу же после этого её вызвать (вызвать получается либо при инициализации глобальной переменной, либо внутри другой функции)? Почему, когда я так делаю, Visual Studio начинает думать, что это не вызов функции, а ещё одно её объявление, но без типа?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.08.2019, 13:00
Ответы с готовыми решениями:

Видимость констант из глобальной области внутри класса
#include <iostream> //stack struct struct node; struct node { int* val; node* prev; }; typedef struct node...

Увеличение значения переменной, обявленной в глобальной области
Начал изучать CUDA, т. к. надо пистаь курсач... И вот у меня появился вопрос. Допустим я выделил в глобальной памяти интовую переменную....

Области действия переменной
void f() { ... // 1 { ... // 2 int i; for(i=0; i<10; ++i) { ... // 3 }

23
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
16.08.2019, 19:31
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от _stanislav Посмотреть сообщение
имелось ввиду объявляется?
Да, хотел написать "объявляется"
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
16.08.2019, 19:33
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Объявление с инициализатором всегда будет определением, разумеется.
не для всех разумеется.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13205 / 6840 / 1822
Регистрация: 18.10.2014
Сообщений: 17,298
16.08.2019, 20:46
Цитата Сообщение от _stanislav Посмотреть сообщение
сейчас критически не возможны неоднозначности?
Сейчас они совершенно непринципиальны. Инициализация возможна только в объявлениях - это совершенно корректное утверждение. То, что в большинстве случаев объявление с инициализатором станет еще и определением, никакого отношения к данной теме не имеет.

Цитата Сообщение от _stanislav Посмотреть сообщение
когда примерно такие критические моменты наступают?
Вы можете найти их все просто просмотрев, где спецификация языка использует термин definition. Фактически это сама идея определения и вопросы, связанные с One Definition Rule.

Терминология языков С и С++ следует простому правилу: используйте общий термин объявление везде, где это возможно, используйте частный термин определение только там, где это абсолютно необходимо.

Определение - частный случай объявления. Заострять внимание на том, что данное объявление является еще и определением принято только тогда, когда речь идет именно о свойствах, специфичных для определений.
2
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
16.08.2019, 22:29
Цитата Сообщение от TRam_ Посмотреть сообщение
Не всегда. Например при использовании
Это не определение. Это объявление.

Добавлено через 10 минут
Цитата Сообщение от Марауль Посмотреть сообщение
IGPIGP, конечно да! Ведь определение - это объявление + выделение памяти, а инициализация - это присвоение конкретного значения программистом или пользователем.
Нет. Присвоение, это операция, которая применима многократно. Инициализаия происходит только при объявлении (if any). При чём, некоторые переменные не могут быть объявлены без инициализации (кроме extern объявлений). Это константы и ссылки. Нельзя путать инициализацию и присвоение. Инициализация неразрывно связана с процессом создания объекта и это всё касается работы конструкторов (а это базовая часть RAII).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.08.2019, 22:29
Помогаю со студенческими работами здесь

Различие глобальной и глобальной статической переменной
у нас есть заголовочный файл со стражами, допустим global.h , его используют несколько других хейдеров и с++ файлов . когда там описаны...

Указатель this и операция разрешения области действия
Помогите, пожалуйста..возник вопрос при наследовании классов Вот фрагмент кода, конструктор класса Lector, который наследует некоторые...

Считать цвет определенной области и выполнить определенные действия, в зависимости от цвета
Смотрите, возможно ли сделать так что бы программа считывала в онлайн режиме цвета в определенной области, и в зависимости от этих цветов...

Ошибка вызова конструктора преобразования с аргументом - переменной в области действия данной переменной
Всем доброго времени суток. Увидел на англоязычном сайте школярский вопросик, который может звучать так: "Вывести числа от 1 до 10 и...

Инициализация глобальной переменной
Здравствуйте, мне необходимо в программе по решению СНАУ добавить возможность задавать коэфициенты при неизвестных вводом через консоль. ...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru