sizeof function in C, plz help??

来源:百度知道 编辑:UC知道 时间:2024/09/22 15:38:53
这样

main()
{
/*Initializing the tax array.*/
unsigned tax[] = {0, 500, 2000, 5000, 20000};

/*Calculate size of the array.*/
int i = sizeof(tax) / sizeof(tax[0]);
}

和这样

#define N = 5

main()
{
/*Initializing the tax array.*/
unsigned tax[N] = {0, 500, 2000, 5000, 20000};

int i = N;
}

哪个更好? 我老师跟我说别用sizeof算数组的大小, 可是我这么算没错啊, sizeof(tax) / sizeof(tax[0]); 怎么就不好了??

写法的问题吧,sizeof(tax)看着不习惯,哈哈~~
另外,sizeof()函数涉及到对齐的问题,有时候构造复杂的结构体的时候,长度不是像你想象的那样叠加的,比如:
struct {int a; char c;}这样一个结构体,sizeof返回长度是8,而不是5!
所以....如果编译的时候采取程序优化措施,容易出问题.....

哪个老师不让用sizeof算数组大小的?这么算没错。
至于说对齐的问题,那是sizeof结构的时候,sizeof数组这样绝对没错。
这样的老师以后不要再相信了,还是看书吧

应该是程序 运行速度问题!

你这是个小程序,看不出来什么!
大的程序 有上万条的! 就能显现出来了!

#define N = 5 是宏定义 在程序编译的时候 就已经对程序做了一些改变!

不需要在运行程序的时候再做运算! 加快了程序的运行速度!

后者好。简单明了,容易理解,不容易出错