gpt4 book ai didi

c - C 中的变量重用

转载 作者:太空狗 更新时间:2023-10-29 17:01:36 24 4
gpt4 key购买 nike

我正在查看的代码是这样的:

for (i = 0; i < linesToFree; ++i ){
printf("Parsing line[%d]\n", i);

memset( &line, 0x00, 65 );
strcpy( line, lines[i] );

//get Number of words:
int numWords = 0;

tok = strtok(line , " \t");
while (tok != NULL) {
++numWords;
printf("Number of words is: %d\n", numWords);
println(tok);

tok = strtok(NULL, " \t");
}
}

我的问题围绕着 numWords 的使用。运行时系统是重用这个变量还是在每次运行 for 循环时分配一个新的 int?如果您想知道我为什么要问这个问题,我是一名 Java 程序员,想进入 HPC,因此正在尝试学习 C。通常我知道您想避免代码,例如这个,所以这个问题真的是探索性的。

我知道答案可能取决于编译器...我正在寻找比这更深入的解释。假设您选择的编译器。

最佳答案

您关于这在 Java 中如何工作的概念可能会被误导 - Java 也不会每次都通过这样的循环“分配”一个新的 intint 等基本类型变量未分配在 Java 堆上,编译器将为每次循环迭代重用相同的本地存储。

另一方面,如果您每次通过循环调用 Java 中的 new 任何东西,那么是的,每次都会分配一个新对象。但是,在这种情况下您不会这样做。 C 也不会从堆中分配任何东西,除非您调用 malloc 或类似的(或在 C++ 中,new)。

关于c - C 中的变量重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7699572/

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