我对 C 编程比较陌生,在运行以下代码并使用 gdb 和 lldb 对其进行调试时,我偶然发现了一个对我来说无法解释的行为。
简而言之:当交换索引 i 和 j (max i != max j) 时,在双重嵌套 for 循环内访问二维数组中的值时,如果使用array[i访问该值似乎并不重要][j] 或数组[j][i]。
这两个循环和数组大部分是相同的。
unsigned matrix[3][1] =
{
{3},
{4},
{5}
};
//Loop1
for (size_t i = 0; i < sizeof(matrix) / sizeof(*matrix); i++)
{
for (size_t j = 0; j < sizeof(matrix[i]) / sizeof(*matrix[i]); j++)
{
matrix[i][j] <<= 1;
printf("matrix[%zu][%zu] has the value: %d\n", i, j, matrix[i][j]);
}
}
//same two dimensional array as matrix
unsigned matrix2[3][1] =
{
{3}, …Run Code Online (Sandbox Code Playgroud)