2015-05-30 4 views
-1

Мой вопрос в том, как функция malloc_queue() может обращаться к переменным из init_queue() без, давая какие-либо аргументы!Как получить доступ к переменным в C из разных функций?

Например:

main.c:

if (init_queue()) { 
    malloc_queue() 
} 

init_queue() создает переменную Que:

int init_queue{ 
    struct Queue *que; 
    return 1; 
} 

malloc_queue() хочет сделать что-то с переменным дием от init_queue():

void malloc_queue{ 
    struct Queue *que = (struct Queue*)malloc(sizeof(struct Queue)); 
    return; 
} 

, но это не работает, поскольку malloc_queue не знает, что такое que. Есть ли какие-либо возможные способы, не приводя никаких аргументов?

+2

Прочитайте все, что вы можете о ** области ** идентификаторов. Особенно искать * область файла *. – Jens

+0

вы должны иметь переменные, объявленные в том месте, где они используются. –

+3

@ user3717963 Вам нужно переписать функции, потому что они просто ошибочны. –

ответ

0

Возможно, вам нужны внешние функции, имеющие область видимости внутри своего файла.

Проверьте этот код:

#include <stdio.h> 

static int x = 0; 
void a() { 
    x = 5; 
} 
void b() { 
    x*=2; 
} 
int main(int argc, char * argv[]) { 
    printf("%d\n", x); 

    a(); 
    printf("%d\n", x); 

    b(); 
    printf("%d\n", x); 

    return 0; 
} 

Подобно тому, как комментарии предложил, прочитать о гр прицелов.


Если вам нужно объявить-структуру, кроме основных типов, вам, возможно, придется объявить указатель на структуру в качестве внешней функции static variable, а затем выделить память (например malloc()) внутри одного из ваших функций.

+0

только что получил ответ. Я объявляю прямо сейчас переменные в заголовке. Это хорошая идея? – user3717963

+0

@ user3717963 Обычно заголовки предназначены для констант и прототипов функций. Во-первых, вы должны знать область действия своей переменной, если она используется только в одном файле, а затем объявлена ​​так, как мой ответ описан. Опять же, если вы планируете использовать c в долгосрочной перспективе, сначала прочитайте книгу «Thc c progrramming language 2nd». Вы получите больше, чем вы просили. –

Смежные вопросы