一直都没有搞清楚的问题,估计很多人都没有搞清楚!!!
// Array_Parameter.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
struct Node
{
int data[5];
float a;
char c;
};
void print(int data[],int length)
{
int i = 0;
for(;i < length;i++)
{
printf("%d\t",data[i]);
}
}
void print2(int data[])
{
int i = 0;
for(;i < sizeof(data)/sizeof(int);i++)
{
printf("%d\t",data[i]);
}
}
int main(int argc, char* argv[])
{
Node node = {1,2,3,4,5,100.0,'A'};
print(node.data,sizeof(node.data)/sizeof(int));
print2(node.data);
printf("\n");
return 0;
}
想打印出Node里面的data信息,用print可以,用print2就不行了,原因是print2函数里sizeof(data)
算的是一个数据的长度(4),而不是整个数组的长度,这是为什么?难道print2函数里非要传入一个length才能准确定位实参数组的元素个数么??