Android_NDK C指针运算和函数指针
二级指针和多级指针
对地址再取地址
int a = 12;
int* p = &a;
int** dp = &p;
int* op = *dp;
int* op2 = dp[0] ;
dp的值是p的地址,p的值是a的值。如果想知道dp的地址,就需要3级指针指向dp的地址即可。
如果想要最终的值,就用多级n个*进行取值即可。
最后两个op的写法其实是一样的。看别人代码的时候可以灵活思维。
数组和数组指针
int arr[] = {1,2,3,4};
int* p = arr;
//*p = 1;
p++;
//*p = 2;
其实就是指针会指向数组的首地址,如果一直++指针,超过数组大小,指针内容将不可控。
指针为什么要有类型?
取值的时候没有类型会取不到正确的值。
指针偏移的时候不知道偏移量。
函数指针
void add(int num1,int num2){
printf("%d",num1+num2);
}
int main(){
operate(add,1,1);
int(*p)(int, int);
p = add;
}
void operate(void(method)(int,int),int num1,int num2){
method(num1,num2);
}