NDK探究之旅《一》——对jni和NDK的认识android
所谓指针就是 一块内存内存空间或者说 内存地址函数
好比说咱们的电脑:学习
为何要用位来表示呢ui
位表示内存地址时所采用的不一样方式。spa
注意:C99语法中,for循环不支持在()里面定义int变量值。操作系统
#include <stdio.h> main(){ int i = 3;//申请一快内存地址,大小为4个byte,用于储存int类型的数据 printf("int类型所暂居的byte为:%d\n",sizeof(int)); int* p;//指针类型 //一、申请一块内存地址,空间为32位 ,大小为32位 //二、int* 建立出来p存放一个内存地址(大小为32位,4个byte就够用了) //注意:无论任何类型的带*的变量都是32位的 //三、 建立一个int* 的数据类型,p是他的变量名 //四、p里面存放的是一块内存空间的地址 p = &i; printf("i的内存空间的地址为: 0x%x\n",p); printf("i=%d\n",i); printf("i=%d\n",*p);//取内存空间p里面的数据 system("pause"); }复制代码
*的含义有三点
- *紧跟着一种数据类型前面int* 表示的是一种指针变量,指的是取内存控件的地址
若是是跟在一个指针变量的前面 *p,表示的是去内存空间里面的数据,*p把p地址里面的数据取出来.net
x*y乘以指针
指针变量: 指的是一个变量,int* p;则p就是指针变量
指针: 一块内存空间的地址
一些市场上的各类说法——指针和指针变量没有什么区别。
准确的来讲只有值传递,调用子函数的全部操做都是值传递
引用传递,最终仍是值传递,传递的是对象的地址
示例代码:
#include <stdio.h> void changedNum(int i,int j){ printf("i=%d\n",i); printf("j=%d\n",j); int temp; temp = i; i = j; j = temp; printf("i=%d\n",i); printf("j=%d\n",j); } main(){ int i = 3; int j = 5; changedNum(i,j); printf("i=%d\n",i); printf("j=%d\n",j); printf("************************************************\n"); int* p = &i; printf("i的地址为%d\n",p); printf("改变i的值,并打印p的值\n"); i = 100; printf("i只改变后的地址为%d\n",p); printf("改变p的值打印I的值\n"); p = &j; printf("改变p的值后去打印:i = %d\n",i); system("pause"); }复制代码
指针的常见错误错误
- 使用指针变量时,必须先给其进行负值,在使用
int* p ;//申明出来一个指针变量,用于存放内存地址
printf("p=%d\n",p);
野指针,不容许这样
double d = 3.222222;
double* p =&d;
不能直接给指针变量进行赋值
下面是错误的写法
doble* p = &2.123123
不能直接用内存地址16进制去赋值(其实和上面同样)
//错误的写法
int* p =0x123123;
博客地址:
相信本身,没有作不到的,只有想不到的
若是你以为此文对您有所帮助,欢迎入群 QQ交流群 :232203809
微信公众号:终端研发部
(欢迎关注学习和交流)