gpt4 book ai didi

c++ memset() 在主函数内/外的工作方式不同

转载 作者:行者123 更新时间:2023-11-30 19:58:20 26 4
gpt4 key购买 nike

我遇到了 memset 函数的问题这是代码的一部分代码1

int main()
{
long long int num=600851475143;
bool factor[5000];
//memset(factor,true,sizeof(factor));
primer_factor_find(factor);
int largest=largest_primer_factor(num,factor);
cout<<largest<<endl;
return 0;
}

void primer_factor_find(bool factor[])
{
memset(factor,true,sizeof(factor));
int j,k;
for(j=1;j<=2500;j++)
for(k=3*j+1;k<=5000;k+=(2*j+1))
factor[k]=false;
}

与Code2唯一的区别是memset函数的位置。(在Code2中,memset在main中)我发现 Code1 根本不起作用。Code2 工作正常。怎么了?

最佳答案

void primer_factor_find(bool factor[])
{
memset(factor,true,sizeof(factor));

将无界数组传递给函数基本上等于指针。此时,sizeof 为您提供指针大小,并留下大部分内容垃圾。

当你把它放在 main 中时,编译器知道完整的大小。

关于c++ memset() 在主函数内/外的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32109225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com