Форум программистов, компьютерный форум CyberForum.ru

Глобальная переменная - C++

Восстановить пароль Регистрация
 
UEF
0 / 0 / 0
Регистрация: 30.03.2010
Сообщений: 22
16.04.2010, 23:24     Глобальная переменная #1
Никогда с таким не сталкивался... В общем:
Надо обьявить глобальный масив в одной функции, но чтобы его видели все другие функции. Вне функции обьявить нельзя. А что делать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Oleg462
31 / 30 / 3
Регистрация: 18.01.2010
Сообщений: 123
16.04.2010, 23:39     Глобальная переменная #2
попробуй
C++
1
extern int a
UEF
0 / 0 / 0
Регистрация: 30.03.2010
Сообщений: 22
17.04.2010, 00:59  [ТС]     Глобальная переменная #3
Да, но... Разве это глобальная? Я пробовал с этим чтото сделать, но его то инициализировать гдето нельзя, то еще чтото...
Все учебники блин перелестал, ниче не нащел(((((
delfamur
 Аватар для delfamur
42 / 42 / 0
Регистрация: 16.03.2010
Сообщений: 199
17.04.2010, 09:27     Глобальная переменная #4
возможно надо тип возвращаемого значения для функции сделать аналогичным типу массива. а в других функциях вызывать ту, в которой массив описан. т.е., реализовать через подпрограмму
UEF
0 / 0 / 0
Регистрация: 30.03.2010
Сообщений: 22
17.04.2010, 09:38  [ТС]     Глобальная переменная #5
Вобщем вот... Компиллер материться что он не знает никаких б (((
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <stdlib.h>
void q(){
     extern int b;
     b = 1;}
void w (){
     printf ("%i\n", b);}   //Не знаю я никаких b!
int main (){
q();
w();
system ("PAUSE");
return 0;}
delfamur
 Аватар для delfamur
42 / 42 / 0
Регистрация: 16.03.2010
Сообщений: 199
17.04.2010, 09:54     Глобальная переменная #6
а если повыше функции объявить extrern int b; ??? а в самой функции только b=1;
Nick Alte
Эксперт С++
1561 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,896
Завершенные тесты: 1
17.04.2010, 10:46     Глобальная переменная #7
Зачем советовать, если не знаешь? Никакой extern тут не поможет, он для другого служит. Переменные, которые объявляются внутри функции, только внутри неё и доступны. Более того, они создаются только при заходе в функцию, а при выходе уничтожаются. Единственный способ удаления гландов через задний проход - объявить массив статическим и заставить функцию возвращать его адрес:
C
1
2
3
4
5
6
7
8
9
10
int* GlobalArray()
{
    static int array[100];
    return array;
}
 
void OtherFunction()
{
    GlobalArray()[5] = 0;
}
UEF
0 / 0 / 0
Регистрация: 30.03.2010
Сообщений: 22
17.04.2010, 14:32  [ТС]     Глобальная переменная #8
Не лутчий способ... Но спасибо)
Просто я мгру пишу, и хочу чтоб пользователь сам выбирал кол-во противников, и я хотел в функции диалога создать масив структур... Гг=)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2010, 14:37     Глобальная переменная
Еще ссылки по теме:

глобальная переменная не читается в новом потоке C++
глобальная переменная из другой dll C++
C++ Глобальная переменная

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

Или воспользуйтесь поиском по форуму:
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
17.04.2010, 14:37     Глобальная переменная #9
UEF, так попробуй:
C++
1
2
3
// array.cpp
int  g_size  = 0;
int* g_array = NULL;
C++
1
2
3
// array.h
extern int  g_size;
extern int* g_array;
C++
1
2
3
4
5
6
7
8
// main.cpp
#include "array.h"
 
int main() {
  g_size  = 10;
  g_array = new int[g_size];
  // и т.д.
}
Yandex
Объявления
17.04.2010, 14:37     Глобальная переменная
Ответ Создать тему
Опции темы

Текущее время: 01:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru