指针
来源:互联网 发布:淘宝外卖商家app叫什么 编辑:程序博客网 时间:2024/06/11 11:05
- 地址(指针)是什么?
- 指针变量:
- 存储地址的变量;
- int a;
int* p = &a; //&a返回变量a的首地址
c、*解引用符号 ,用来操作某地址对应内存空间;
d、%p打印地址(十六进制输出)
e、 32位占4个字节 64 位占8个字节
3、空指针与野指针
空指针:值为NULL的指针
野指针:指向的空间没有使用权限
相同点:都不能解引用
一般使用指针时,如果没有直接初始化为一个可用的地址,需要置空。当指针不在使用时,也需要置空;好处:
所有不为空的指针都能解引用;
- 指针做函数的参数
本质也是值传递,通过对形参指针变量间接的修改(*),来实现对实参指针所指向数据的修改
- 传入参数 使用指针对应的变量中的数据
- 传出参数 修改指针对应的变量中的数据
- 函数返回指针变量
返回的指针指向的空间要有使用权限
- 内存分配:
- 栈区:主要是局部变量,自动内存管理
- 代码区:存放二进制代码
- 文字常量区:存放 “abc”;
- 静态全局区:全局变量,静态变量(都是编译期初始化)
- 堆区:程序员手动管理
- 开辟空间
malloc(n) //在堆区申请n个字节的连续空间,返回首地址
calloc(n,s) //在堆区申请n*s个字节的连续空间,返回首地址
realloc(address,size)//在已有空间的基础上重新申请size个字节空间
a、当size大于原来的空间时:
重新开辟空间,将原来空间中的数据拷
贝到新空间,并释放原来的空间
b、当size小于原来的空间时:
缩小原来的空间到size大小,原空间
size大小数据保留
- 释放空间
free(p);//p为要释放的堆空间的首地址
注意:只用自己申请的堆空间才能使用free
malloc 和 free 要成对出现
当malloc次数 > free次数内存泄漏
当malloc次数 < free次数二次删除
- 思考函数不能返回指向局部变量的指针原因?
- 指针与数组
int a[5] = {1,2,3,4,5};
int* p = a;
a、数组名类似指针,访问数组的方式:
a[0]等价于 *p;
a[1] 等价与 *(p+1);
以数组形式访问:
- 传递数组作为函数参数
int func1 (int array[]);
int func1 (int *array);
注意数组名是常量,不可以修改
阅读全文
0 0
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- 指针
- Pomelo(一):网易开源基于 Node.js 的游戏服务端框架
- 机器学习的相关资源
- cocos2dx主循环的委托模式学习
- Android RxJava
- mysql 存储过程动态拼接sql并执行赋值
- 指针
- linux常用命令123
- EWAHCompressedBitmap数据结构及原理
- NIO 学习(八) selector详解
- Ubuntu上搭建自己的ngrok服务器
- Durid
- idea包路径下的配置文件无法读取
- python3爬虫攻略(2):urllib.request(2)
- pomelo(二) pomelo架构概览