#include <iostream>
using namespace std;
int main(int argc, char **argv) {
int a=5;
int *p,*q;
*p = a;
*q = *p; //line 6
cout<<*p<<p<<*q<<q;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这个程序挂了.似乎问题出在第6行.为什么会这样?
1)
i = 0;
while(i < N){
j = i+1;
while(j < N && p[i].first == p[j].first && p[j].second - p[i].second < K) j++;
i = j; res++;
}
Run Code Online (Sandbox Code Playgroud)
2)
for(i=0;i<N;i++){
j = i+1;
while(j < N && p[i].first == p[j].first && p[j].second - p[i].second < K) j++;
i = j; res++;
}
Run Code Online (Sandbox Code Playgroud)
第一个代码和第二个代码的区别仅在于1)中的while循环和2中的循环.但据我所知,由于它们两者的输出应该是相同的,但它有所不同.以上代码都只是总代码的一部分.但是我应该告诉你1)输出是2,而2)是3.
我不知道为什么答案是不同的,因为发生的一切都是一样的.
我随处读到back()函数返回对最后一个元素的引用,但我有一个疑问.
我用元素1,3,5 resp创建了一个向量.然后我写了下面的代码
int i = v.back();
i++;
Run Code Online (Sandbox Code Playgroud)
在上面的两个陈述之后,我打印了矢量,我得到了输出1 3 5,而当我增加参考时它应该是1 3 6.
但是当我这样做(v.back())++然后打印矢量的值时,我得到了结果
1 3 6
Run Code Online (Sandbox Code Playgroud)
我不明白输出的差异,据我说它应该是一样的.如果我错了,请纠正我.