如何在C语言中以数组指针作为形参输出数组

#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代表数据的长度

因为'\0'的ASCII码就是 0 !!!!!!

相互比较的时候会把'\0'转化为ASCII码,也就是0,所以停在第二个了……

senddata[2] 的值为0所以根据你的(*info) != '\0'的判断就会输出到senddata[2]就停止,如果想遇‘\0’则结尾的话,可以把senddata数组声明成char型。