C++学习笔记------指针基础概念

指针:C语言的一种数据类型和地址

概念:为了方便访问内存中存储的内容,系统给每一个内存单元(字节),一个编号,该编号就是地址也就是指针。

        地址的编号以16进制形式输出

指针变量:存储指针(地址)的变量

定义:类型(指针指向的类型:指针变量保存的是哪一种数据类型变量的地址) *指针变量名;

           类型(指针变量的类型) 指针变量名;

内存大小:固定值4个字节

指针运算符:

        1.&取地址  保证&的后面必须有地址,后面是常量便会报错

        2.*取内容    解析引用符,*后必须是地址

指针变量赋值赋值:

        1.相同类型变量的地址

        2.相同类型的指针变量

 指针偏移:指针+整数

                   p+1;1表示1个单位,1个单位多大,看指针指向的类型大小

void* pvoid 指向任意类型 但是其他类型不能指向它 不能偏移或者读取数据 用的时候进行强转

0地址:不能存储数据 用来判断指针有没有指向

整型提升的过程中值是不会发生改变,只有数据溢出才会发生改变

指针练习:

//定义一个int型变量n(系统分配内存:4个字节)
	int n = 10;
	cout << &n << endl;
	//指针变量的类型和指针变量指向的类型
	int *pn;//定义时*没有实际意义,仅仅表示定义的是一个指针
	pn = &n;//pn保存了变量n的地址
	cout << pn << endl;//指针变量指向的地址
	cout << &pn << endl; //指针变量自己的地址
	//求指针类型所占字节数
	cout << sizeof(short*) << endl;//4
	//*指针变量名=指针变量指向的变量
	cout << *pn << endl;//*pn=*&n=n
	*pn = 100;
	cout << n << endl;//100

	int m = 0x1234ab56;
	char* pchar = (char*)&m;
	cout << hex << (int)*pchar << endl;//56

	short* pshort = (short*)&m;
	cout << hex << *pshort << endl;//ab56

	m = 0x5612cdab;
	pchar = (char*)&m;
	cout << hex << (int)*pchar << endl;//ffffffab

	unsigned char *puchar = (unsigned char*)&m;
	cout << hex << (int)*puchar << endl;//ab

	pshort = (short*)((int)pshort + 1);
	cout << *pshort << endl;//12cd

	int a[5] = { 1, 2, 3, 4, 5 };// 00/00/00/05 00/00/00/04 00/00/00/03 00/00/00/02 00/00/00/01
	pshort = (short*)a;
	pshort = (short*)((int)pshort + 1);
	cout << *pshort << endl;//0

															  
	short b[5] = { 1, 2, 3, 4, 5 };// 00/05 00/04 00/03 00/02 00/01
	int *pb = (int*)b;
	cout << hex << *pb << endl;//20001

	pb = (int*)((int)pb + 1);
	cout << *pb << endl;//3000200

	pb = (int*)b;
	cout << *(pb + 1) << endl;//40003

	pb = 0;//0地址  不能存储数据
	pb = nullptr;//NULL
	int y = 0;//整数0
	cout << pb + 1 << "," << y + 1 << endl;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值