C++指针
时间:2019-09-09
本文章向大家介绍C++指针,主要包括C++指针使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
指针
是一种数据类型 用来指向一个变量的地址
int a=10; a=20; int b=100; int* p= &a; p=&b; printf("%p\n",&b);//%p表示指针 0x7ffee5633874 //printf("%X\n",p);//p是一个地址,%X 16进制输出 cout<<p;//0x7ffee5633874
p是int*类型的,*p代表p地址的值,p代表着一个地址
通过指针修改变量的值
*p=200; printf("%d\n",b);//200 printf("%d\n",*p);//200
sizeof()指针类型在内存中的大小
在64(32)位的机器里,无论什么类型的指针大小都是8(4)个字节,因为存的都是地址,内存地址都是无符号整型的。
cout<< sizeof(p)<<endl;//8 cout<< sizeof(double*)<<endl;//8 cout<< sizeof(short*)<<endl;//8 cout<< sizeof(int*)<<endl;//8 cout<< sizeof(char*)<<endl;//8 cout<< sizeof(float*)<<endl;//8
野指针
是指向一个未知的内存空间,可能在读写的时候发生错误
指针变量也是变量,是变量就可以任意赋值,不要越界即可(64位机器 为8字节)
但是,任意数值赋值给指针变量没有意义,因为任意数值的地址可能时未知的(操作系统不允许操作此指针指向的内存区域),野指针不会直接引发错误,操作野指针指向的内存区域才会出问题。
int a=10; int* p=&a; //指向内存编号为0xff00的内存地址 //内存0-255是系统保留的,不能读,也不能写 p=0xff00;//该地址是未知的内容空间 *p=100; printf("%d\n",*p);
空指针
就是指向内存编号为0 的空间,操作该内存空间会报错,一般情况空指针用于条件判断
int* p; p=NULL; *p=100; printf("%d\n",*p); if(p!=NULL) { //free(); }
万能指针
int a=10; void* p=&a; *(int *)p=100;//将p强转成int*类型 再在前面加上*,就是取出p地址指向的值 ;再赋值,改变a的值 cout<<a;//100 //cout<<*p;//这样写不行,因为p还是void*类型 cout<<*(int*)p;//100
int arr[10]={0}; void* p=arr; *(int*)p=100; *((int*)p+4)=200; cout<<arr[0]<<" "<<arr[4];//100 200
(未完~待续~)
原文地址:https://www.cnblogs.com/zuiaimiusi/p/11494784.html
- 革了短信的命之后,微信开始把枪口对准了应用市场
- 建构微服务的第一步: 微服务哪里来?
- 最新机器学习必备十大入门算法!都在这里了
- ASP.NET MVC的Razor引擎:IoC在View激活过程中的应用
- 深度学习笔记:深度学习在计算机视觉的应用
- 快速添加永久存储到到Minishift / CDK 3
- 张小龙发布2018微信全新计划(内附演讲全文)
- 使用JClouds在Java中获取和发布云服务器
- 利用ASP.NET SiteMap生成与Bootstrap"兼容"菜单
- 埃隆·马斯克强烈推荐的5本书,看完之后他开始改变世界
- 算法:AOE网(Activity On edge Network)与关键路径简介
- ASP.NET Core的配置(4):多样性的配置来源[中篇]
- ASP.NET MVC的Razor引擎:RazorViewEngine
- 算法:求解AOE网的关键路径
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法