Pix*_*ras 1 c c++ for-loop memory-management
假设您编写了一个 for 循环:
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
Run Code Online (Sandbox Code Playgroud)
for 循环是否创建了 10 个不同的j变量,并且在完成循环后它是否i释放j?
我见过很多人这样做:
int i, j, k
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
//..All The Loops..//
Run Code Online (Sandbox Code Playgroud)
在所有循环之前声明变量有什么好处i j k,还是只是个人喜好?
所有相关变量均在自动存储中创建。当它们超出范围时就会被摧毁。这两个示例只是在不同的作用域中声明变量。
在第一个示例中,i作用域为外循环,含义i仅在循环运行时存在。它在循环开始时创建,在循环结束时销毁:
for (int i = 0; i < 10; i++) { <- created here
<statements>
} <- destroyed here
Run Code Online (Sandbox Code Playgroud)
j与内循环相同:
for (int i = 0; i < 10; i++) { <- i created here
for (int j = 0; j < 10; j++) { <- j created here
<statements>
} <- j destroyed here
} <- i destroyed here
Run Code Online (Sandbox Code Playgroud)
在第二个示例中,变量的作用域为循环所在的外部块。因此,变量在外部循环开始之前就已经存在,并且在循环结束后它们继续存在。
for (int i = 0; i < 10; i++) { <- i created here
for (int j = 0; j < 10; j++) { <- j created here
<statements>
} <- j destroyed here
} <- i destroyed here
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
358 次 |
| 最近记录: |