C++ sizeof的问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 09:36:13
#include <iostream.h>
#include <string.h>

typedef unsigned char uint8;

uint8 SingleFrame(uint8 AFN, uint8 *Addr, uint8 SourceData[])
{
uint8 L=0;
if (AFN==0x11 || AFN==0x15 || AFN==0x16 || AFN==0x17 || AFN==0x18 || AFN==0x1B)
{
//BCDchange(uint8 *SourceData); //返回处理后的数据,存在数组SourceData中
}

L=sizeof(SourceData);
return L;
}

void main(void)
{

uint8 a[]={0x09,0x05,4,18,22,56};
uint8 b=sizeof(a);
cout<<"length="<<int(SingleFrame(0x10, a, a))<<endl;
cout<<"b="<<int(b)<<endl;
}

为什么结果length 和 b不等呢? 明明处理过程是相同的呀

uint8 SingleFrame(uint8 AFN, uint8 *Addr, uint8 SourceData[])
因为在作为参数的时候
数组退化成了指针

sizeof(指针) = 4

非参数时为真实大小6

楼上正解!ourceData作参数,为指针,不是数组名!
指针大小为4