首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
指针大览
时间:
2014-11-08 13:42:10
阅读:
143
评论:
0
收藏:
0
[点我收藏+]
标签:
c编程
指针
内存
字面量
Int a = 10 中的10 存放在除堆,栈,全局区,之外的位置中,可以当作在代码区中。
存放在堆,栈,全局区的数据都可以取地址(&),可以以此来分辨。
內存塊的數據打包
(Unsigned char ×buf +len )
指针也是一种变量 ,编译器只自动分配4个字节
Int *a
Sizeof(a)= 4
指针存在的最大意义
1. 在同一函数里的指针 p1++ = p2++
2. 指针做函数参数,通过*p指针间接修改实参的值(间接赋值)
void getlength(int *p)
{
*p = 40;
}
int main()
{
int a = 10;
int *p = NULL;
a = 20;
p = &a;
*p = 30;
printf("a:%d \n",a);
getlength(&a);
printf("a:%d \n",a);
system("pause");
return 0;
}
间接赋值三个条件
1. 定义一个变量(实参),定义一个变量(形参)
2. 建立关联(实参取地址传给形参)
3. *p形参,间接去修改实参的值
指针做函数参数(多级指针模型)
函数调用过程中,
用一级指针(通常是形参)去修改0级指针(通常是实参)的值
用2级指针(通常是形参)去修改1级指针(通常是实参)的值
用3级指针(通常是形参)去修改2级指针(通常是实参)的值
用4级指针(通常是形参)去修改3级指针(通常是实参)的值
用n级指针(通常是形参)去修改n-1级指针(通常是实参)的值
函数调用时,形参传给实参,用实参取地址,传给形参,在被调用函数里面用*p来改变实参,把运算结果传出来。
【】 与 *
buf[i ] --->buf[0+i]--->* (p +i)
站在c++编译器的角度,*p相当于我们程序员手工(显示)利用间接赋值,去操作内存
【】怎么理解,只不过是c++编译器帮我们程序员做了一个 * p的操作
主调函数可以将堆区,栈区,全局区的内存地址传给被调函数(主调函数分配内存)
Void abc(int*d,int *c)
{
}
Int main()
{
Int a;
Int b;
Abc(a,s);
Rerturn 0;
}
避免野指针方法
步骤一:
在指针定义的时给指针赋值 NULL
步骤二:
释放指针前判断指针是否是NULL
步骤三:
释放指针后马上给指针赋值NULL
指针大览
标签:
c编程
指针
内存
原文地址:http://blog.csdn.net/caiyaodeng/article/details/40920047
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!