c++ 指针(不断更新)
2024-08-31 04:38:50
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();
}
最新文章
- Hello Bugs
- react 调用 native 的callShareAllFunc()方法,实现分享
- 经常在eclipse中导入web项目时,出现转不了项目类型的问题,导入后就是一个java项目。
- Android Studio Gradle构建脚本
- 十日谈 (share)
- 剑指Offer40 和为s的连续正数序列
- windows下tomcat切割日志按照日期输出
- iOS开发-控件设置
- 递归实现生成Grey码
- 提取肤色信息原理及操作——opencv
- C++类的实例化的两种方法
- 转:HTML错误编号大全
- eclipse中集成hadoop插件
- js知识点记录
- JS中获取session中传过来的值对象
- postman简单教程-环境变量,全局变量的设置及作用
- blueprint的使用
- MybatisGenerator生成的mapper 少了识别主键的方法 byPrimaryKey()
- redis的内存优化【转】
- Tanya and Password CodeForces - 508D (欧拉回路)