如题。
将数组作为一个参数传出去,那么他就会“退化”成一个指针类型,进而失去“数羡正组的属性”。(这里的数组念胡不是new出来的)
这里的“属性”指的是数组可以使用sizeof(Array)/sizeof(Array[0])的方法获得其长度的方法的属性。
要在一个函数中得到一个数组的长度,你应该这个数组作为一个引用传出去,那样,兄高悔就能用sizeof(Array)/sizeof(Array[0])的方法获得长度了。
/*Make 2D Array v2.*/
template<typename T, typename T2>
void make2dArray(/*output para*/T** &arr, const uint16_t x, T2& volatileY_array)
{
磨和氏 /*你棚灶要的长度。用模版的形式,就能够把数组以指针的形式传进来。*/
int len = sizeof(volatileY_array)/sizeof(volatileY_array[0]);
try
{
if (x != len)
{
throw std::bad_alloc();
}
arr = new T*[x];
for (int i = 0; i < x; i++)
{
arr[i] = new T[volatileY_array[i]];
}
}
catch (std::bad_alloc)
{
std::cout <瞎散< "Error." << std::endl;
}
}
无法获得,必须再传一个长度进去。
int a(int * x)
{
int y;
while(!(*x))
x++;
}
int len = sizeof(str)/sizeof(char *);