(1)
int a[]={1,2,3,4,5}; //OK
(2)
int a[5];
a={1,2,3,4,5};
//ERROR
結論:對於陣列用大括號{}的賦值方式只是在定義的時候適用
否則必須用迴圈的方式
結構體初始化(方法一)
using
namespace std;
struct S{
int i;
float f;
};
struct S
s={10,15.5};//使用{}的正確方式
如果改成
s;
s={10,15.5};就不行
方法二(通行的方法)
從Ucos_ii.c核心程式碼中學到的
OS_MemClr((INT8U
*)&OSTCBTbl[0],sizeof(OSTCBTbl));Clear all the
tcb
下面是給結構體陣列清零的函式,實質是將結構體佔據的記憶體區域視為字元變數區域
,用迴圈對單個記憶體位元組單元的清零來實現對結構體佔據的記憶體區域即(結構體)的清零
void
OS_MemClr (INT8U *pdest, INT16U size)
{
while (size > 0) {
*pdest++
= (INT8U)0;
size--;
}
注意函式OS_MemClr中的強制型別轉換 INT8U
(*)&OSTCBTbl[0],
目的是將結構體指標轉化成字元型指標,對單個記憶體單元的清零(*pdest++ =
(INT8U)0;),來完成對結構體的清零(或者是結構體陣列)
(1)
int a[]={1,2,3,4,5}; //OK
(2)
int a[5];
a={1,2,3,4,5};
//ERROR
結論:對於陣列用大括號{}的賦值方式只是在定義的時候適用
否則必須用迴圈的方式
結構體初始化(方法一)
using
namespace std;
struct S{
int i;
float f;
};
struct S
s={10,15.5};//使用{}的正確方式
如果改成
struct S
s;
s={10,15.5};就不行
方法二(通行的方法)
從Ucos_ii.c核心程式碼中學到的
OS_MemClr((INT8U
*)&OSTCBTbl[0],sizeof(OSTCBTbl));Clear all the
tcb
下面是給結構體陣列清零的函式,實質是將結構體佔據的記憶體區域視為字元變數區域
,用迴圈對單個記憶體位元組單元的清零來實現對結構體佔據的記憶體區域即(結構體)的清零
void
OS_MemClr (INT8U *pdest, INT16U size)
{
while (size > 0) {
*pdest++
= (INT8U)0;
size--;
}
}
注意函式OS_MemClr中的強制型別轉換 INT8U
(*)&OSTCBTbl[0],
目的是將結構體指標轉化成字元型指標,對單個記憶體單元的清零(*pdest++ =
(INT8U)0;),來完成對結構體的清零(或者是結構體陣列)