c++指针只能说博大精深,在用的时候感觉好晕

1.指针类型转换

/*
在指针的强制类型转换:ptr1=(TYPE*)ptr2中,如果sizeof(ptr2的类型)大于sizeof(ptr1的类型),
那么在使用指针ptr1来访问ptr2所指向的存储区时是安全的。如果sizeof(ptr2的类型)小于sizeof(ptr1的类型),
那么在使用指针ptr1来访问ptr2所指向的存储区时是不安全的
*/
#include <iostream>
using namespace std;
void fun(char*s)
{
char c;
c=*(s+);*(s+)=*(s+);*(s+)=c;
c=*(s+);*(s+)=*(s+);*(s+)=c;
}
int main()
{
int a=;
fun((char*)&a);
cout << a;
getchar();
}

这个程序是实现整形的字节内容转换

#include <iostream>
using namespace std; struct MyStruct
{
bool b;
};
int main()
{
void* ptr = new bool;
cout << sizeof(MyStruct);
MyStruct* p = (MyStruct*)ptr;
p->b = true;
getchar();
}

对于这个例子MyStruct的大小为1,所以满足条件,只含有虚函数的类大小为4,因为有虚指针,任何指针的大小都是4,空类大小为1,这个是c++规定的,因为系统要存储这个类型,大小为0就没法存储

2.NULL指针

#include <iostream>
using namespace std; int main()
{
char* p = NULL;//空指针的值是0x00000000,NULL主要是内存删除之后赋成null,防止野指针
p = new char('a');//我也为空指针什么都不能操作,这个是给p重新分配一块内存
cout << *p << endl;
delete p;
*p = 'c';//p野指针,虽然内存删除了,但指针还是指向那个位置
p = NULL;
*p = 'b';//p是空指针,对空指针操作直接报错,所以在在指针删除之后置为NULL,防止对野指针的误操作。 getchar();
}

c++ 指针(不断更新)的更多相关文章

  1. winphone 中的指针和手势事件

    注意  有关这些主题的最新概述,请参阅指针事件和手势事件主题. 小心  W3C 指针事件规范自从在 Internet Explorer 10 中实施以来,已经经历了多次修订.此外,截止到 Intern ...

  2. Leetcode分类刷题答案&心得

    Array 448.找出数组中所有消失的数 要求:整型数组取值为 1 ≤ a[i] ≤ n,n是数组大小,一些元素重复出现,找出[1,n]中没出现的数,实现时时间复杂度为O(n),并不占额外空间 思路 ...

  3. 实现tap的多种方式

    一.tap.js 这是一个比较轻量的插件tap.js,142行代码,支持模块化开发. 1)handleEvent addEventListener方法中的第二个参数,我原先并没有注意到其实可以传一个对 ...

  4. git push :推送本地更改到远程仓库的三种模式

    摘要:由于在git push过程中,no-fast-forward 的push会被拒绝,如何解决git push失败的问题?这里面有三种方法,分别会形成merge形式的提交历史,线性形式的提交历史,覆 ...

  5. Windbg使用简明指南

    第一章 准备 1.1.    环境配置 _NT_DEBUGGER_EXTENSION_PATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 _NT_SY ...

  6. 非阻塞同步算法与CAS(Compare and Swap)无锁算法

    锁(lock)的代价 锁是用来做并发最简单的方式,当然其代价也是最高的.内核态的锁的时候需要操作系统进行一次上下文切换,加锁.释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放. ...

  7. CUDA2.1-原理之索引与warp

    本小节来自<大规模并行处理器编程实战>第四节,该书是很好的从内部原理结构上来讲述了CUDA的,对于理解CUDA很有帮助,借以博客的形式去繁取间,肯定会加入自己个人理解,所以有错误之处还望指 ...

  8. SQL Server 内存中OLTP内部机制概述(二)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...

  9. OpenGL顶点缓冲区对象(VBO)

    转载 http://blog.csdn.net/dreamcs/article/details/7702701 创建VBO        GL_ARB_vertex_buffer_object 扩展可 ...

随机推荐

  1. SecureCRT 默认配置

    1.配置默认设置

  2. Struts2中文件下载

    在struts.xml中配置如下 <action name="download" class="cn.itcast.domain.User" method ...

  3. std::vector<char> 转 const char

    std::stringstream oss; for(unsigned int i=0;i < buffer->size();i++){ oss<<(*buffer)[i];  ...

  4. sql替换字符串部分内容

    update 表名 set 字段名=replace(cast(与前面一样的字段名 as varchar(8000)) ,'原本内容','想要替换成什么') update News set news_d ...

  5. c# 按位与,按位或

    在工作中遇到按位或组合权限串.一直不是特别明白.今天终于花了半个下午的时间搞明白其中的道理. 首先每一个权限数都是2的N次方数 如:k1=2 ; //添加 k2=4 ; //删除 k3=8; //修改 ...

  6. 企业信息系统集成框架(设计思路)C++模式

    设计要求: 1.企业信息系统框架.第三方产品通过接口层进行分层. 2.企业信息系统框架如何自由的继承第三方产品:通过一个抽象类.(软件设计要求:模块要求松,接口要求紧). 设计步骤: 1.报文的接受与 ...

  7. 【百度地图API】怎样制作多途经点的线路导航——驾车篇

    摘要: 休假结束,酸奶小妹要从重庆驾车去北京.但是途中要去西安奶奶家拿牛奶饼干呢! 用百度地图API,能不能帮我实现这个愿望呢? ----------------------------------- ...

  8. Docker 私有仓库最简便的搭建方法

    http://blog.csdn.net/wangtaoking1/article/details/44180901/ Docker学习笔记 — Docker私有仓库搭建http://www.jian ...

  9. Unity向量投影使用

    官方例图 测试: code: public Transform point1; public Transform point2; public Transform humanPoint; public ...

  10. asp.net mvc5 配置自定义路径

    首先配置路由文件,默认页是第一个路由的配置: using System; using System.Collections.Generic; using System.Linq; using Syst ...