商用自適應網(wǎng)站建設智能搜索引擎
今天碰到一個題目,寫bfs寫炸了,發(fā)現(xiàn)好像數(shù)組越界,但是卻沒有報錯,而是被邊界檢查攔截了
導致死循環(huán)了???
ps:所以寫邊界問題,首要的就是對邊界進行檢查,不檢查越界之后會發(fā)生什么結(jié)果,你也不清楚!!!
下面是一個示例,展示如何使用負下標
#include<iostream>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
#define int long long int
const int maxLine=500+10;
bool checkMap[maxLine][maxLine];
int arr[maxLine]; signed main(){for(int i=0;i<maxLine;i++){arr[i]=i;}int *p=arr+maxLine/2;cout<<p[-1];return 0;
}
輸出答案是254(即255的前一位)
你發(fā)現(xiàn)了嗎?指針下標索引,實質(zhì)上就是對地址的偏移索引,使用下標就是使用對應的地址
地址可以怎么玩,下標也可以怎么玩!