JNI之C语言指针再现

C语言指针再现

前言

将近一年多没用碰C和C++的东西了,一直在做java和android的东西,学到android的jni开发的时候需要用到C和C++的东西,其中C和C++中最难的东西毫无疑问就是指针了,相信大家都有这种苦恼,即使学了也就是半懂不懂的状态。下面将用最简单的例子来说明下指针。

实现

代码如下:
#include<stdio.h>    
#include<stdlib.h>    
main(){  
       int i = 123;
       //一般计算机中用16进制数来表示一个内存地址 
       printf("%#x\n",&i); 
       //int* int类型的指针变量  pointer指针  指针变量只能用来保存内存地址
       //用取地址符&i 把变量i的地址取出来 用指针变量pointer 保存了起来
       //指针pointer指向了i的地址 
       int* pointer = &i; 
       printf("pointer的值 = %#x\n",pointer);
       printf("*pointer的值%d\n",*pointer);
       *pointer = 456;
       printf("i的值是%d\n",i);
       } 
运行结果如下:
0x62fe44
pointer的值 = 0x62fe44
*pointer的值123
i的值是456
下面做关键部分的解释:
int* pointer = &i; 
这句代码的意思是定义一个指针变量pointer,并让其指向变量i的内存地址,也就是point里面存的就是变量i的内存,而*pointer里面存的就是pointer指向的内存里面所存的值,即i的值。
*pointer = 456;
这句代码的意思是修改pointer指向内存的值,所以最后i的值被修改成了456.





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值