指標強制轉換與位元組對齊

2022-03-13 22:23:12 字數 454 閱讀 1082

以下直接貼**了,會註明,哪一種是ok的,哪一種會導致ecu reset。

//這個會導致問題。

void fun_a(void);

uint16 value = 0;

value = *(uint16*)&data[2];

}//這個就不會導致問題。

void fun_b(void);

uint16 value = 0;

value = *(uint16*)data[2];

}//這個就會導致問題

void fun_b(void);

uint16 value = 0;

value = *(uint16*)data[3];

}

有誰知道問題所在麼?在前乙個晶元上,這樣寫是沒有問題的,但是當換了乙個平台以後,這樣寫就會導致mcu復位。復位的原因是pc指標跑飛。

指標強制轉換

c 和 c 的指標強制轉換時不太一樣的,c 提供了4中型別,用於更加精細化控制指標的強制轉換。1 指標轉換原理 討論指標的強制轉換之前,我們先要理解清楚指標的根本含義。最通俗的解釋,指標即是位址,但是,指標絕不僅僅只是位址。1 指標存著所指物件位址 2 指標存著所指物件的型別和型別大小 試想我們定義...

指標強制轉換

指標強制轉換在指令變數賦值上,只是編譯器的乙個善意的提醒,在組合語言中,和不加強制轉換的指令時一樣的,並沒有多產生指令。強制轉換後的影響不是在轉換的時候發生,而是在用轉換後的身份去訪問記憶體時體現到了指令中。例子 6 int i globle variable 7 int pi globle var...

C 指標型別與強制轉換

指標是乙個特殊資料型別,也可以理解為混合資料型別。指標具有資料型別資訊及資料在記憶體空間的位址。問題分析 c 指標雖然像int型別或是long int型別一樣存放著記憶體位址。但是我們取得的指標位址,不僅僅只有位址值,因為指標型別是一種混合型別。這時我們就需要強制型別轉換。我在qt 5.14版本編譯...