宏定义函数

// Type your code here, or load an example.
#include <bits/stdc++.h>
using namespace std;

#define SUB(x,y) x-y
#define ACCESS_BEFORE(element,offset,value) *(SUB(&element, offset) )= value
//不理解为什么 *SUB(&element, offset) = value 是错误的
void fun (int * a, int b, int c){
int *dPointer = reinterpret_cast<int*>(a-b); //显式转换指针
*dPointer = c;
}
void fun1 (int & a, int b, int c){
/*cout<<'\n'<<&a<<endl;
cout<<'\n'<<a<<endl;
cout<<'\n'<<a-b<<endl;*/
int *dPointer = reinterpret_cast<int*>(&a-b); //显式转换指针
*dPointer = c;
}
void fun2 (int & a, int b, int c){
int *dPointer ;
dPointer = &a-b;
*dPointer = c;
}
int main() {
int array[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
*(&array[5]-4) = 0;
ACCESS_BEFORE(array[5],3,0);
fun(&array[5],2,0);
fun1(array[5],1,0);
fun2(array[5],-1,0);
for (int i = 0; i < 10; ++i) {
cout<<array[i]<<endl;
}
system("pause");
return 0;
}
posted @ 2022-02-14 12:55  Dsad123FFFG6645  阅读(136)  评论(0)    收藏  举报