Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不明白array-1是什么意思_C++_C_Arrays - Fatal编程技术网

C++ 不明白array-1是什么意思

C++ 不明白array-1是什么意思,c++,c,arrays,C++,C,Arrays,我在理解这个代码方面有问题,尤其是vet-1部分。 这是什么意思?它返回数组中的哪一项?谢谢 #include <stdlib> #include <iostream> using namespace std; void change( int m, int n[7]); int main(){ int vet[] = {1,2,3,4,5}; change(vet[4],vet-1); change(0,&vet[4]); int i=0; for (i=

我在理解这个代码方面有问题,尤其是vet-1部分。 这是什么意思?它返回数组中的哪一项?谢谢

#include <stdlib>
#include <iostream>

using namespace std;

void change( int m, int n[7]);

int main(){
int vet[] = {1,2,3,4,5};
change(vet[4],vet-1);
change(0,&vet[4]);
int i=0;
for (i=0;i<5;i++) cout << vet[i];
return 0;
}

void change( int m, int n[7]) {
(*(n+m))--; m++; n--;
}
vet-1试图引用vet[0]前面的元素指针

实际上,这样做的行为是没有定义的。所以整个程序是未定义的


这里没有什么需要理解的;继续前进

我认为这是UB,因为vet-1超出了绑定数组,即使没有延迟。顺便说一句,afaik C既没有iostream头,也没有名称空间std@Jarod42:是的,你说得对。唯一的例外是vet+5。它可能尝试使用C数组,但由于超出了界限而失败。由于语法错误,它甚至无法编译!完全正确。特别是如果是一个面试问题。我也这么想,但是为什么程序打印一些东西而不是给运行时错误?@ FrancescoMarzetta:因为当你使用[]访问一个元素时,C++假设你知道你在做什么。如果希望抛出异常,请使用.at@FrancescoMarzetta,这是未定义行为的一部分。程序可能会崩溃,但不一定会。