【发布时间】:2019-06-20 15:39:02
【问题描述】:
我一直试图在给定索引处将新元素插入给定数组。虽然我能够插入新元素,但我几乎没有疑问..
- 为什么它被插入到第 7 个索引而不是第 3 个?
- 变量k的值怎么变成7?
- 为什么新数组有 1 个元素,但新数组和旧数组的大小相同?
提前致谢。任何帮助将不胜感激。
int main()
{
int arr[] = {1,2,3,4,5,6,7};
int n = sizeof(arr)/sizeof(arr[0]);
int k = 3;
cout << "elements of old array" << endl;
for (int i=0; i<n; i++){
cout << arr[i] << endl;
}
cout << "size of old array " << sizeof(arr) << endl << endl << endl;
// inserting new element
for (int j=n; j>k; j--){
arr[j] = arr[j-1];
}
arr[k] = 10;
cout << "elements of new array " << endl;
for (int i=0; i<=n; i++){
cout << arr[i] << endl;
}
cout << "size of new array " << sizeof(arr)<< endl ;
}
【问题讨论】:
-
1) 您为什么不尝试使用调试器逐行执行代码? 2)
arr[j],当j == n是未定义的行为(由于数组的索引超出范围)。因此,弄清楚为什么观察到某些特定行为是没有意义的。 3) 考虑向good C++ book学习。 -
如果您打算更改数组大小,请使用
std::vector。 -
无关:如果您的编译器是最新的,您可以使用
std::size而不是sizeof(arr)/sizeof(arr[0])来确定数组的大小。