#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
int i = 0;
int *p1 = &i; /*类型匹配的对象地址*/
int *p2 = p1; /*同类型的另一个有效指针*/
p1 = 0; /*0值常量表达式*/
p1 = nullptr; /*0值常量表达式*/
p1 = NULL; /*0值常量表达式*/
const int ci = 0;
p1 = ci; /*0值常量表达式*/
p1 = &i + 6; /*对象末的下一地址*/
double db = 0;
/*p1 = &dp; 类型不匹配error
由于指针的类型用于确定指针所值对象的类型,因此初始化或者赋值时必须保持类型匹配
*/
void *pd = &db;
pd = p1;
/*void*可以保存任何类型的指针,不允许对void * 指针操作它指向的对象*/
system("pause");
}
指针初始化规则:
- 0常量表达式。
- 类型匹配的对象的地址
- 同类型的另一个有效指针
- 另一对象末尾的下一地址
void*可以保存任何类型的指针,不允许对void * 指针操作它指向的对象