int * p1=NULL;
int * p2=0;
int * p3 =nullptr;
都是指向空指针
void * p (p可以接受任意类型的地址)
int * a;
p=&a;
cout<<*((int*)p)
int * p1=NULL;
int * p2=0;
int * p3 =nullptr;
都是指向空指针
void * p (p可以接受任意类型的地址)
int * a;
p=&a;
cout<<*((int*)p)
&a 访问内存地址
*a 访问内存存储内容
定义指针时要一同完成地址赋予,为防止报错如果指向空地址也要写0或NULL或nullptr
注意用void*指针声明时,一定带类型,不然也会因识别不出是哪种地址而报错
null不指向任何区域
nullptr代表空的
0,NULL,nullptr
void*
#include <iostream>
using namespace std;
int main()
{
int a = 10;
float b = 9.7f;
int c = 20;
// & 取得一个变量的内存地址
//cout << &a << endl; // 0093F748
//cout << &b << endl; // 0093F73C
// * 从内存地址所对应的内存处 取得数据
//cout << *(&a) << endl; // 10
//cout << a << endl; // 10
// error: cout << *a << endl;
int* pa = &a;
float* pb = &b;
//cout << pa << endl; // 0079F722
//cout << pb << endl; // 0079F71C
//cout << *pa << endl; // 10
//cout << *pb << endl; // 9.7
//int* p;
//p = pa;
//cout << *p << endl; // 10
//cout << *pa << endl; // 10
//*pa = 100;
//cout << a << " " << *pa << endl; // 100 100
//*p = 300;
//cout << a << " " << *pa << " " << *p << endl; // 300 300 300
int* p1 = NULL;
int* p2 = 0;
int* p3 = nullptr; // C++11
cout << p1 << " " << p2 << " " << p3 << endl;;// 00000000 00000000 00000000
// 笔记:void 返回类型/任意类型指针
void* p; // p 可以接收任意类型的指针
p = &a;
//p = &b;
cout << *((int*)p)<< endl; // 10
return 0;
}
nullptr 空指针
void *p;// p可以接收任何类型的对值
int main()
{
int *P=0;//int *p=NULL;
int *P2=0;
itn *p3=nullptr;
//空类型 void *p;//p可以接受任何类型的指针;
}
void *p可以接收任意类型的指针值 但使用的时候