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);
...
...
...
}

 

 

给TA打赏
共{{data.count}}人
人已打赏
开发

C++语言关键字

2023-9-15 11:42:39

开发

C++基础入门 – 函数

2023-9-15 12:00:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索