C++警告报‘sizeof’ on array function parameter ‘array’ will return size of ‘int*’

中文解释:使用sizeof得到的并不是整个数组的字节数,而是指针的字节数,是int*指针的大小(数组被退化为指针使用sizeof)

错误代码:

void getNextArr(char* ps,int next[])
{
int length=sizeof(next)/sizeof(next[0]);
...
...
...
}

sizeof(next)这句话会报警告,告诉我们‘sizeof’ on array function parameter ‘array’ will return size of ‘int*’。

原因:

数组作为参数传给函数时,是传给数组首个元素的地址,而不是传给整个的数组空间。什么意思呢?就是说形参拿到的是指针的内存空间,是指针的字节数,是int*指针的大小,所以我们不能通过上文的sizeof方式获取到数组大小了。

 

解决方法:在创建int数组的时候,就得同时计算出数组长度然后传给函数。

void getNextArr(char* ps,int next[],int length)
{
use arg:length In method chunk
...
...
...
}
int main()
{
    char* p="abab";
    int strLength=strlen(p);
    int* next=new int[strLength];//moreover->sizeof(next)/sizeof(next[0])
    getNextArr("abab",next,strLength);
...
...
...
}

 

 

作者:Miracle
来源:麦瑞克博客
链接:https://www.unitymake.com/archives/programming-life/cpp/2144
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!
THE END
分享
打赏
海报
C++警告报‘sizeof’ on array function parameter ‘array’ will return size of ‘int*’
中文解释:使用sizeof得到的并不是整个数组的字节数,而是指针的字节数,是int*指针的大小(数组被退化为指针使用sizeof) 错误代码: void getNextArr(char* p……
<<上一篇
下一篇>>
文章目录
关闭
目 录