簡體   English   中英

char數組中的C指針

[英]C pointer in char array

我試圖了解我是否可以解決我遇到的問題,我想添加一個指向堆棧分配數組的數組成員的指針,以便該數組成員可以動態更改。

必須是無符號字符,因為這是一個通訊緩沖區。

int main() {
    unsigned char *var;
    unsigned char test[] = {*var, 0x34, 0x56, 0x78};
    *var = 0x12;
    printf("%x %x %x %x %x", *var, test[0],test[1],test[2],test[3]);
    *var = 0xff;
    printf("%x %x %x %x %x", *var, test[0],test[1],test[2],test[3]);
}

感謝您的任何回答,是或否。

編輯:感謝所有建議,在嘗試找到不同的方法之前,我已經研究過使用數組索引。 問題是沒有辦法知道數組索引,因為正在編輯的數組被連接起來形成一個更大的數組,所以索引發生了變化,這就是我想使用變量的原因。

你幾乎擁有它。 嘗試這個:

int main()
{
    unsigned char* var;
    unsigned char test[] = { 0x00, 0x34, 0x56, 0x78 };
    var = &test[0];  // Makes var point to the first test[] item
    *var = 0x12;
    printf("%x %x %x %x %x\n", *var, test[0], test[1], test[2], test[3]);
    *var = 0xff;
    printf("%x %x %x %x %x\n", *var, test[0], test[1], test[2], test[3]);
}

你的問題是你不明白指針是什么。

    unsigned char* var;
    unsigned char test[] = { 0x00, 0x34, 0x56, 0x78 };

這會調用未定義的行為。 var是指向 char 但不指向任何地方的指針(它沒有被初始化或以其他方式說它沒有分配的引用)。 第二個定義 simple 獲取這個指針引用的 char 值(它不指向任何有效字符)並將這個值作為數組test的第一個元素。 數組本身不包含有關所存儲數據來源的任何信息。

要使此代碼正常工作,您需要為指針分配數組第一個元素的引用。

int main(void)
{
    unsigned char test[] = { 0x00, 0x34, 0x56, 0x78 };
    unsigned char* var = test;  /* or &test[0] */

    *var = 0x12;
    printf("%x %x %x %x %x\n", *var, test[0], test[1], test[2], test[3]);

    *var = 0xff;
    printf("%x %x %x %x %x\n", *var, test[0], test[1], test[2], test[3]);
}

小問題:您的main聲明無效。 它必須是int main(void)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM