NDK探究之旅《四》——指针的强化理解
来源:互联网 发布:网络被骗多少钱立案 编辑:程序博客网 时间:2024/06/07 15:33
NDK探究之旅:
NDK探究之旅《一》——对jni和NDK的认识
NDK探究之旅《二》——C语言的基本认识
NDK探究之旅《三》—C语言的输入输出函数
什么是指针
所谓指针就是 一块内存内存空间或者说 内存地址
64位和32位
比如说我们的电脑:
- 32位
- 32位可以表示一个int类型,我们都知道一个int可以表示2的32次方内存空间。2的32次方为2^32 = 4 294 967 296,4 294 967 296 / 1024 / 1024 / 1024 = 4G
- 因此一个32位的操作系统最多能支持4G的运行内存。
- 计算机中有有一些内置的硬件和软件需要申请到内存地址。因此留给用户的可能不足3个G
-
- 64位
为什么要用位来表示呢
位表示内存地址时所采用的不同方式。
注意:C99语法中,for循环不支持在()里面定义int变量值。
*号的含义
#include <stdio.h>main(){ int i = 3;//申请一快内存地址,大小为4个byte,用于储存int类型的数据 printf("int类型所暂居的byte为:%d\n",sizeof(int)); int* p;//指针类型 //1、申请一块内存地址,空间为32位 ,大小为32位 //2、int* 创建出来p存放一个内存地址(大小为32位,4个byte就够用了) //注意:不管任何类型的带*的变量都是32位的 //3、 创建一个int* 的数据类型,p是他的变量名 //4、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地址里面的数据取出来
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;
博客地址:
http://blog.csdn.net/androidstarjack/article/details/71514125
### 相信自己,没有做不到的,只有想不到的
如果你觉得此文对您有所帮助,欢迎入群 QQ交流群 :232203809
微信公众号:终端研发部
(欢迎关注学习和交流)
- NDK探究之旅《四》——指针的强化理解
- NDK探究之旅《五》——指针和数组之间的关系
- NDK探究之旅《六》—函数的指针、结构体、枚举、宏定义
- NDK探究之旅《七》—函数指针,宏定义的优缺点及应用场景
- NDK探究之旅《一》——对jni和NDK的认识
- NDK探究之旅《十》——ndk项目实战之Androidstudio开发经验总结
- NDK探究之旅《二》——C语言的基本认识
- NDK探究之旅《八》——jni的开发流程规范
- NDK探究之旅《九》——jni开发中常见的错误及其注意事项
- NDK探究之旅《三》—C语言的输入输出函数
- 第四篇:指针的强化理解
- NDK探究之旅《十一》—C代码调用Java代码之项目实战
- Python探究之旅—Python语言的基本认识
- 指针引发的探究
- 探究c的指针
- 指针的再探究
- C++学习之旅——函数指针理解
- Android NDK编程之JNI探究
- TOMCAT成功部署,但是通过浏览器访问不了?
- linux 驱动程序 内核数据类型
- 欢迎使用CSDN-markdown编辑器
- sar 命令妙用
- Jenkins入门系列之——00答疑解惑
- NDK探究之旅《四》——指针的强化理解
- Android RecyclerView
- 正则表达式匹配中文的情况
- TensorFlow (RNN)深度学习 双向LSTM(BiLSTM)+CRF 实现 sequence labeling 序列标注问题 源码下载
- html5移动端点击不会全屏播放的播放器
- 《统计学习方法》的一些点
- C语言模拟实现C++多态
- Linux同步网络时间
- # windows 环境下面创建RabbitMQ集群