问题描述
- 如何在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) != '') && (info != NULL); *info++ k++)
printf(""senddata is %drn"" *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 %drn"" *(info+k));
}
其中len代表数据的长度
解决方案二:
因为''的ASCII码就是 0 !!!!!!
解决方案三:
相互比较的时候会把''转化为ASCII码,也就是0,所以停在第二个了……
解决方案四:
senddata[2] 的值为0所以根据你的(*info) != ''的判断就会输出到senddata[2]就停止,如果想遇‘’则结尾的话,可以把senddata数组声明成char型。