2016-12-02 107 views
0

我正在用指針來度過這麼難的時間。基本上,我想要一個buff void指針指向一個無符號字符kbdbuff [],以便每當kbdbuff []發生變化時,就會反映在buff指向的值中。 我得要去這樣做此最接近的:獲取指向地址的指針,以便反映更改

kbdbuff[0] = 4; 
unsigned char *tempbuf = buff; 
*tempbuf = *kbdbuff; 

淺黃色指針指向4月底,但問題是,指針被分配不會反映在所指向的值之後的任何變更時BUFF。任何幫助將非常感激。

+2

你如何申報'kbdbuff'和'buff'? – Mouin

+2

爲什麼一個'void'指針?您無法取消引用「空白」指針。你必須知道它所指向的數據的類型,並對它進行類型轉換以解引用它。 –

+0

@Mouin buff作爲參數以「void * buff」的形式給出,並且字符數組爲「unsigned char kbdbuff [4]」 –

回答

1

你的意思是這樣的嗎? (給你所提供的信息):

int main(void) 
{ 
    void* buff; 
    unsigned int kbdbuff[4]; 

    buff = kbdbuff; 

    kbdbuff[0] = 4; 
    printf("kbdbuff[0] = %d\n", kbdbuff[0]); 
    printf("buff[0] = %d\n", ((int*)buff)[0]); 

    kbdbuff[0] = 3; 
    printf("kbdbuff[0] = %d\n", kbdbuff[0]); 
    printf("buff[0] = %d\n", ((int*)buff)[0]); 

    return 0; 
} 

輸出:

kbdbuff[0] = 4 
buff[0] = 4 
kbdbuff[0] = 3 
buff[0] = 3