2014-10-19 1 views
1

Я совершенно новый в C, что я пытаюсь сделать, это определить указатель с постоянным адресом, это моя попытка в testHeader.h :Как определить глобальную константу указателя char в C и переопределить значение poiting во всех файлах

char const *MY_VAR_P = (char * const)(0x4fffff); 
extern char MYVAR; 

затем в глобальной из test.c (но я получил в виду, чтобы использовать тот же самый указатель с тем же адресом в других .c файлов ...):

#include "testHeader.h" 

char MYVAR = '0'; 
*MY_VAR_P = MYVAR; 

и это ошибка:

test.c:33: warning: type defaults to `int' in declaration of `MY_VAR_P' 
test.c:33: conflicting types for `MY_VAR_P' 
test.h:2: previous declaration of `MY_VAR_P' 
test.c:33: warning: initialization makes pointer from integer without a cast 
test.c:33: initializer element is not constant 

Я действительно не понимаю ... пожалуйста, кто-нибудь может мне помочь?

спасибо!

+0

изменения 'символ * сопзИте MY_VAR_P = (символ * сопзИ) (0x4fffff) и' * MY_VAR_P = MYVAR; ' переместитесь внутрь функции. – BLUEPIXY

ответ

0

Там две проблем с этой строкой:

  • MY_VAR_P имеет тип указателя на постоянная полукокс. Вы не можете изменить то, что MY_VAR_P указывает на этот указатель. Может быть, вы указали на эту переменную как указатель на на char?

    char * const MY_VAR_P = ...; 
    
  • Вы не можете запускать код вне функций. Задача *MY_VAR_P = foo должна идти внутрь вашей основной или какой-либо другой функции. (Другая в тех места, где вы используете = не назначение, они инициализация.)

+0

Да, я хочу фиксированный, фактически постоянный адрес для моего указателя. Но переменный, который он ссылается, должен быть динамическим ... Итак, как мне писать? Хорошо для следующего задания ... –

+0

Я положил это в свой ответ уже - 'char * const'. Положение const важно. 'const char *' и 'char const *' означают (не const) указатель на данные const. 'char * const' означает const-указатель на неконстантные данные. Читайте справа налево. – Mat

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