中的數組所以我決定在C語言中編寫我自己的Big Integer庫(PIC32),但是我有一個我不明白的奇怪問題。代碼運行時,big_int_t
結構a
和b
位於不同的內存位置,但a->bytes
和b->bytes
似乎位於相同的位置(通過打印指針確認)。在b->bytes
中設置一個值也會更改a->bytes
中的值。在下面的主函數中,從結構的bytes
數組中打印第一個元素顯示爲41
。難道我做錯了什麼?初始化struct
#include <stdint.h>
#include <stdio.h>
typedef struct {
uint8_t size;
uint8_t *bytes;
} big_int_t;
void big_init(big_int_t *big, uint8_t size) {
big->size = size;
uint8_t bytes[size];
big->bytes = bytes;
uint8_t i;
for(i=0;i<big->size;i++) big->bytes[i] = 0;
}
int main() {
big_int_t a,b;
big_init(&a,1);
big_init(&b,1);
a.bytes[0] = 16;
b.bytes[0] = 41;
printf("%d\n",a.bytes[0]);
printf("%d\n",b.bytes[0]);
}
使用'malloc'獲取'bytes'的內存。不要使用堆棧變量。 – Matt 2015-04-03 10:55:52