#include "stdafx.h"
void cmdsend(unsigned int * info);
int main()
{
unsigned int senddata[5];
senddata[0] = 8;
senddata[1] = 2;
senddata[2] = 0;
senddata[3] = 4;
senddata[4] = 5;
cmdsend( senddata );
while(1){;}
}
void cmdsend(unsigned int * info)
{
unsigned int k;
for (k = 0; ((*info) != '\0') && (info != NULL); *info++, k++)
printf("senddata is %d\r\n", *info);
}
如上面程序所示,我想將數組sendata完整的輸出,現在只能打印出8,2.即在sendata[2]處結束,好像判斷為 info == NULL了,請問應該怎樣修改,才能輸出完整數組?在使用 *info 指針作為形參的前提下。
上面的已經分析了原因,中間斷斷條件有問題,指針越界以後可能不會為null,這時你的判斷條件不會終止,所以繼續向下執行,導致不確定的後果,最好采用如下形式比較安全:
void cmdsend(unsigned int * info, int len)
{
unsigned int k;
for (k = 0; k < len, k++)
printf("senddata is %d\r\n", *(info+k));
}
其中len代表數據的長度