当前位置: 首页 > news >正文

普洱市住房城乡建设局网站seo是如何做优化的

普洱市住房城乡建设局网站,seo是如何做优化的,网站开发需求书,做网站1g1核够吗空指针在C/C中,空指针(null pointer)是指向内存地址0的指针变量。NULL在C/C中的定义为:#ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif #endif从上面的代码定义中,我们可以发现在C…

空指针

在C/C++中,空指针(null pointer)是指向内存地址0的指针变量。

NULL在C/C++中的定义为:

#ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif
#endif

从上面的代码定义中,我们可以发现

  • 在C语言中,NULL常量指针,指向内存地址0,在操作系统中,0-255内存地址是内核空间地址,是不允许用户层进行访问的

//C
#include <stdio.h>int main(int argc, char *argv[])
{int *p = NULL; //定义了一个空指针printf("p = %x\n", p); //p是指针变量,存的是内存地址,并且这个内存地址为0printf("*p = %d\n", *p); //在操作系统中,0-255内存地址是内核地址空间,//是不允许用户层进行访问的,所以会报段错误return 0;
}

  • 在C++中,NULL数字常量0,在操作系统中,0-255内存地址是内核空间地址,是不允许用户层进行访问的。

//C++
#include <iostream>
using namespace std;int main(int argc, char *argv[])
{int *p = NULL; //定义了一个空指针cout << "p = " << p << endl; //p是指针变量,存的是内存地址,并且这个内存地址为0cout << "*p = " << *p << endl; //在操作系统中,0-255内存地址是内核地址空间,//是不允许用户层进行访问的,所以会报段错误return 0;
}

综上所述,空指针(null pointer)是指向内存地址为0的指针变量

C语言中的NULL和C++语言中的NULL是不一样的

  • C语言中,NULL是指针常量,指向内存地址0

  • C++语言中,NULL是数字常量

野指针

在C/C++中,野指针(wild point)是指向的内存地址空间是未知的,不确定的指针。也就是这个指针存放的内存地址是不合法的,我们对其进行操作,可能会出现严重的后果。

可能产生野指针的情况

  1. 指针未初始化
#include <iostream>
using namespace std;int main(int argc, char *argv[])
{int *p;*p = 1;  //野指针,进行访问会出现段错误cout << "*p = " << *p << endl;return 0;
}

规避方法:指针初始化

int *p = NULL; //指针初始化
*p = 1;
  1. 指针越界操作
#include <iostream>
using namespace std;int main(int argc, char *argv[])
{int arr[5] = {1, 2, 3, 4, 5};int *p = arr;for (int i = 0; i <= 6; i++) //当i>=5时,循环体内对指针操作已越界,{cout << "*p = " << *p << endl;p++;}return 0;
}

上面这两个都是指针越界操作,得到的数据

规避方法:避免指针越界

#include <iostream>
using namespace std;int main(int argc, char *argv[])
{int arr[5] = {1, 2, 3, 4, 5};int *p = arr;for (int i = 0; i < 5; i++) //数组下标最大值为4{cout << "*p = " << *p << endl;p++;}return 0;
}
  1. 函数返回在栈中开辟的临时变量的指针,并对其进行访问
#include <iostream>
using namespace std;int* fun()
{int temp = 10;return &temp; //返回在栈中开辟的临时变量的指针
}int main(int argc, char *argv[])
{int *p = fun();*p = 1;cout << "*p = " << *p << endl;cout << "*p = " << *p << endl;return 0;
}

规避方法:不要返回在栈中开辟的临时变量的指针

  1. 指针释放后未置空
#include <iostream>
using namespace std;int main(int argc, char *argv[])
{int *p = new int(5);cout << "*p = " << *p << endl;delete p;cout << "*p = " << *p << endl;*p = 1; //野指针cout << "*p = " << *p << endl;return 0;
}

规避方法:指针释放后置空

#include <iostream>
using namespace std;int main(int argc, char *argv[])
{int *p = new int(5);cout << "*p = " << *p << endl;delete p;p = NULL; //指针释放后置空cout << "*p = " << *p << endl; //空指针是不允许会访问的,会出现段错误return 0;
}

综上所述,野指针(wild pointer)是指向内存空间地址是未知的,不确定的指针。

产生野指针的情况有:

  • 指针变量未被初始化,我们应该int *p = NULL;对指针变量进行初始化

  • 指针越界操作,我们应该禁止指针越界操作

  • 函数返回在栈中开辟的临时变量的指针,并对其进行操作,我们应该禁止返回在栈中开辟的临时变量的指针。

  • 指针释放后未置空,我们用malloc或new在堆中申请的内存空间,释放后,应置空

int *p = new int(5);
delete p;
p = NULL;int *p1 = malloc(sizeof(int));
free(p1);
p1 = NULL;

空指针(null pointer)和野指针(wild pointer)是两个不同的概率,我们不应该将他们混淆

ending😃

http://www.yidumall.com/news/100511.html

相关文章:

  • wordpress 文章列表 分页抖音seo培训
  • 联通最低套餐站长工具seo综合查询怎么使用的
  • 交互式网站如何做网站推广营销的步骤
  • wordpress 全站httpsskr搜索引擎入口
  • 网站空间的价格百度手机关键词排名工具
  • 上海关闭娱乐场所通知哈尔滨百度搜索排名优化
  • 上海本地生活论坛seo关键词优化案例
  • 哪里做网络推广好百度快照优化
  • java都是做网站吗磁力岛引擎
  • 网站开发.net郑州seo优化外包顾问阿亮
  • 深圳深圳网站制作关键词com
  • 浏阳网站开发公司西安seo排名公司
  • 自己做网站怎么选架构网店营销策划方案ppt
  • 做网站公司logoseo专业培训课程
  • 五金模具技术支持 东莞网站建设开鲁网站seo转接
  • 学校网站建设流程图网店代运营诈骗
  • 网站首页设计多少钱站长工具中文精品
  • 什么网站是专做代购的网站宣传的方法有哪些
  • 梵客家装和业之峰家装哪个好seo怎么弄
  • 娱乐网站名字山东关键词优化联系电话
  • 栖霞网站定制苏州网络公司
  • 高质量摄影作品网站快速seo排名优化
  • 百度关键字搜索到自己的网站个人如何做百度推广
  • 商城网站建设哪家好推广网站哪个好
  • 端午节网站怎么做站长工具使用方法
  • 许昌做网站团队500强企业seo服务商
  • 益阳购物网站开发设计微信营销平台有哪些
  • 做旅游网站的社会效益可行性广州seo招聘网
  • 南京汽车 企业 网站建设广告联盟看广告赚钱
  • 网站的前端用什么语言素材网