C语言的指针不安全
#include<stdio.h>
int main(){
// char a[] = "nihaoma?";
// char *p = a;
// // printf("%c",a[8]);
// printf("%s",p);
int a[2] = {0,1},b = 2;
printf("%d\n",&b);
int *p = a;
printf("%d\n",*(p-1));
}
此时打印的是b的值
此外,对于指针函数
#include<stdio.h>
int fun1(){
return 123;
}
int fun2(){
return 234;
}
int main(){
int (*p1)(),(*p2)();
p1 = fun1;
p2 = fun2;
printf("%d\n%d",(*(p1+6))(),(*p2)());
}
可以分别找出两个fun函数的地址,利用指针+或-就实现了函数窜访