你好,下面是我在在TI DSP裡宣告一個結構分別在主程式及副程式裡使用,以下分別是主程式及副程式裡的寫法,為何在主程式已經給定的值,從副程式裡印出會有非零值呢?
結構宣告:
typedef struct trackingOutput
{
uint16_t TrakcingCfg[32];
} trackingOnput_t;
主程式:
int32_t main(void)
{
int32_t errCode,ik , tk;
trackingOnput_t trackingOutput;
for(tk = 0; tk < 32; tk++)
{
trackingOutput.TrakcingCfg[tk] = 0;
}
以下省略…
/* Start BIOS */
BIOS_start();
return 0;
}
副程式:
void populateOutputs(MmwDemo_DSS_DataPathObj *obj)
{
uint32_t ik,jk,tk;
trackingOnput_t trackingOutput;
System_printf("TrakcingCfg[0]= %d \n",trackingOutput.TrakcingCfg[0] );
System_printf("TrakcingCfg[1]= %d \n",trackingOutput.TrakcingCfg[1] );
System_printf("TrakcingCfg[2]= %d \n",trackingOutput.TrakcingCfg[2] );
System_printf("TrakcingCfg[3]= %d \n",trackingOutput.TrakcingCfg[3] );
System_printf("TrakcingCfg[4]= %d \n",trackingOutput.TrakcingCfg[4] );
System_printf("TrakcingCfg[5]= %d \n",trackingOutput.TrakcingCfg[5] );
System_printf("TrakcingCfg[6]= %d \n",trackingOutput.TrakcingCfg[6] );
System_printf("TrakcingCfg[7]= %d \n",trackingOutput.TrakcingCfg[7] );
System_printf("TrakcingCfg[8]= %d \n",trackingOutput.TrakcingCfg[8] );
System_printf("TrakcingCfg[9]= %d \n",trackingOutput.TrakcingCfg[9] );
System_printf("TrakcingCfg[10]= %d \n",trackingOutput.TrakcingCfg[10] );
System_printf("TrakcingCfg[11]= %d \n",trackingOutput.TrakcingCfg[11] );
TrakcingCfg[0]= 0
TrakcingCfg[1]= 0
TrakcingCfg[2]= 32
TrakcingCfg[3]= 0
TrakcingCfg[4]= 44
TrakcingCfg[5]= 8
TrakcingCfg[6]= 232
TrakcingCfg[7]= 1922
TrakcingCfg[8]= 2478
TrakcingCfg[9]= 3873
TrakcingCfg[10]= 9
TrakcingCfg[11]= 0
因為在主程式的 trackingOutput 和副程式裡的 trackingOutput 不是同一個陣列變數
建議你最好靜下心來
花點時間
先看完這篇 C 語言教學
再來寫程式也不遲