指针知识点

本文介绍了C语言中指针的基本概念,包括指针作为地址变量的性质,如何通过指针访问内存空间,以及指针操作如`num++`, `p++` 和 `(*p)++` 的含义。此外,讨论了野指针和内存泄漏问题,强调了初始化指针的重要性以避免潜在的错误和安全隐患。" 112497574,10296344,BitFlow发布高性能CoaXPress图像采集卡-应用于航空航天与机器人技术,"['图像采集', 'CoaXPress', 'Crio电压采集', 'labview', '航空航天']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指针定义:指针是一个变量,保存的内容为地址。

int num = 5;

如果系统分配给num的空间为0x1000到0x1003 num的地址就为首字节地址0x1000。0x1000内保存的内容为5。

定义指针p

int* p = #

指针p内保存的内容为num的地址,如果系统给p分配的地址为0x2000,可以得到下图

指向内存空间和对应的内存空间:

num++:对num对应的内存空间的值加1.

p++:对p对应的内存空间的值加1.

(*p)++:对p指向的内存空间加1.

‘ * ’为取值运算符,根据对应内存空间里保存的地址找到其对应的内存空间。

p == &num

*p == num == *(&num)


int *pp = &p;

num == *p == **pp ==*(&num)

p == *pp == &num


int* ppp = &pp;

**ppp == *pp == p == &num

***ppp == **pp == *p == num =*(&num)


int *p; 定义为指针类型为int* 指向int

char *p; 定义为指针类型为char* 指向char


野指针:随机指向一块内存的指针,有可能导致内存泄漏。

内存泄漏:访问一块不可访问或已经释放的内存。

int *p;

scanf("%d",p);

printf("%d",*p);

这里虽然定义了指针,但是未对其进行初始化,系统对未初始化的局部变量分配一个随机的值,所以p指向一个随机的地址,而这个地址系统不一定分配给用户,用户不一定有使用权限,或者有使用权限但已经释放,如果使用此指针就有可能造成内存泄漏。


避免野指针需要给指针赋初值值

int * p = (int * )malloc(sizeof(int));

int * p = NULL;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值