P83指针初级(野指针,指针的运算)#C语言学习

文章介绍了野指针的概念,包括非法访问、越界操作和已释放内存的访问,强调了这些行为可能导致的未知风险。为防止野指针,提出了初始化指针、避免越界、及时置空和验证指针有效性的建议。此外,还提及了指针的基本运算如加减和关系运算。
摘要由CSDN通过智能技术生成

一.定义:野指针是指向位置是不可知的

1.非法访问

int *p;

*p=20//非法访问

2。越界访问

int arr[10]={10};

int *p;

int i=0;

for(i=0,i<=10;i++){

*p=i;

}//当i=10时进行了越界访问,超出了数组

3.指针释放了,还给操作系统仍进行访问,变为野指针

动态释放开辟

int *text{

int a;

return *a;}//进入循环后a的内存空间已经被释放

int main(){

itn*p=text();再次访问空间a

*p=20;

return 0;

}

二.避免野指针的方法

1.进行指针的初始化//好的编程习惯

当不知道*p指针应该初始化什么时,int *p=NULL;

2.小心越界,c语言本身是不会检测越界的

3.指针指向的空间释放,及时置空

4.指针使用之前检查它的有效性

if(p!=NULL);

*p=10;

三.指针的运算

1.指针+-

2.指针的关系运算

#define N_values 5;

float *values[N_VALUES];

float*vp;

for(vp=values[0];vp<&values[N_VALUES];){//指针的逻辑运算

*vp++;//指针的加减

}

数组名字就是首元素的地址

3.指针-指针   前提两个指针指向同一块空间

运行结果是两个指针之间的元素个数

strlen求字符串的长度  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值