2014-10-19 39 views
1

我在C中很新,我想要做的是定義一個帶有常量地址的指針,這是我在testHeader.h中的嘗試:如何在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

改變爲'char * const的MY_VAR_P =(char * const的)(0x4fffff);'和'* MY_VAR_P = MYVAR;'移動到功能的內部。 – BLUEPIXY 2014-10-19 12:37:06

回答

0

有兩個問題與該行:

  • MY_VAR_P有類型指針定焦。您不能通過該指針修改指向的內容。也許你的意思是該變量是一個const指針字符

    char * const MY_VAR_P = ...; 
    
  • 您不能在函數之外運行代碼。分配*MY_VAR_P = foo需要進入你的主或其他功能。 (另,你用=不是地方的任務,它們是初始化。)

+0

是的,我想要一個固定的,實際上是常量,我的指針地址。但它所指的變量必須是動態的... 那麼,我該如何寫? 好的下一個作業... – 2014-10-19 18:27:19

+0

我把這個在我的答案已經 - 'char * const'。 const的位置很重要。 'const char *'和'char const *'指示const數據的指針(非const)。 'char * const'意思是指向非const數據的const指針。從右到左閱讀。 – Mat 2014-10-19 18:30:19