#include <bits/stdc++.h>
using namespace std ;
int arr[3] = {100,200,300} ;
//如何处理 负索引,我们就可以用一级指针
// arr[-2] += 10;//这种操作不允许
// 指针偏移(Base Address Shift)
/*
定义一个大数组 Cnt[2 * N],然后让 *cnt = Cnt + N,这样:
cnt[-100000] 实际访问 Cnt[0]
cnt[0] 访问 Cnt[N]
cnt[100000] 访问 Cnt[2*N - 1]
只要保证 |pos| < N,就不会越界。
*/
// 使用指针偏移支持负下标
int Cnt[2 * N];
int* cnt = Cnt + N; // cnt[i] 对应真实数组 Cnt[N + i]
int main(){
int a = 0x23; //表示十六进制
int b = 023 ;//表示八进制
long long c = 1LL;
//cout << a;
printf("0x%x\n", &a ) ;//输出变量a所在的地址,以十六进制表示
int *p =(int*)0x22fe34; //等价&a
*p = 30;
cout << a << endl ;
*(arr + 1) = 70 ; //等价于 arr[1] = 70 ;
cout << arr[1] <<endl ;
int **q = &p;
**q = 90;
cout << a <<endl ;
return 0;
}
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com