我已经看到了几个浮动数组长度的宏:
从这个问题:
#define length(array) (sizeof(array)/sizeof(*(array)))#define ARRAY_LENGTH(array) (sizeof((array))/sizeof((array)[0]))#define SIZE(array, type) (sizeof(array) / (sizeof(type))和Visual Studio的_countof:
#define _countof(_Array) (sizeof(_Array) / sizeof(_Array[0]))
Run Code Online (Sandbox Code Playgroud)
我想知道的是:
array[0]和有*array什么区别?在下面的程序中,数组的长度ar在main中是正确的,但是temp它显示了ar我的计算机上指针的长度为2(以单位为单位sizeof(int)).
#include <stdio.h>
void temp(int ar[]) // this could also be declared as `int *ar`
{
printf("%d\n", (int) sizeof(ar)/sizeof(int));
}
int main(void)
{
int ar[]={1,2,3};
printf("%d\n", (int) sizeof(ar)/sizeof(int));
temp(ar);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何定义函数,以便在函数中正确读取数组的长度.