C++中的{0}数组填充赋值

{0} array filling assignment in C++?

本文关键字:数组 填充 赋值 中的 C++      更新时间:2023-10-16

我读到使用这个赋值声明

int arr[n][n]={0};

将给出一个充满0的nxn矩阵,但当我运行它时,它不会在特定位置给出0,在某些情况下,它们甚至看起来像地址,特别是在末尾arr[n][n]和arr[n][1]附近,其中所有其他都被分配给0。是什么导致了这种分配?使用for循环填充此数组不会产生此问题。

编辑:在这种情况下,n是任何正整数>=2

似乎{number}只影响第一个元素,而保留其余元素。下面的语句将所有元素设置为0。感谢评论中的人真正回答了这个问题。

int arr[n][n]={};

特别是在arr[n][n]arr[n][1]末端附近

arr[n][n]arr[n][1]都是无效访问,使用这些索引会导致未定义的行为。

有效索引的范围是[0,n-1],例如最后一个元素是arr[n - 1][n - 1]