C++学习--初识指针

#include <iostream>
int main(){
	/*
		1.cpu在访问数据的时候,是根据变量的内存地址进行访问的,而非变量名.
		2.指针是一个值为内存地址的变量,即指针变量中存放的是内存地址.
		3.声明一个变量其实就是在给这个变量分配一块内存空间.
			eg: 
				//声明一个int类型的变量a,实际上就是在内存中找一块适合存储int类型数据的空间,分配给变量a.
				int a;
				//声明一个int类型的指针变量,并把变量a的地址,作为值保存进系统给指针p分配的内存空间中.
				int *p = &a;
		4.指针变量的声明格式:
			数据类型 指针变量名;
			eg: double *b;
			注意:
				要求指针变量的类型,与其指向数据的类型一致是有原因的.
				因为不同类型的数据在内存中所占字节不同,
				例如int型占4个字节,double占8个字节,若用int类型的指针指向double类型的数据,会出乱子的.
		5.由于系统默认char类型的指针变量是一个字符串,因此在打印其指针变量
			指向的变量地址时,需要加上强制类型转换
			eg:
				char a = "A";
				char* p = &a;
				//第一句打印出的结果不会是内存地址
				cout << p << endl;
				//加了强制类型转换后,才会输出正确的地址.(void *)表示任意类型.
				cout << (void *)p << endl;
		6.星号的位置意义:
			(1)int* p: *号紧挨着数据类型,此写法偏向于地址,即p就是一个地址变量.
			(2)int *p: *号紧挨着变量,此写法偏向于值,即*p是一个整型的值.
		7.空指针:
			(1)我们在声明指针的时候,最可怕的就是不给指针赋值.因为如果不给指针赋值,它就会指向一个默认值.
			(2)C++中对空指针的定义有两种方式:
				1.使用nullptr:
					int * p = nullptr;
				2.直接赋值0:
					int * p = 0;
		8.(void *)类型指针:
			(1)该类型指针为一种特殊的指针,它可以存放任意类型的数据地址,即可以指向任意的数据类型.
			eg: double a = 5.20;
				int *p = &a;
				void *q = &a;
				if( p==q ){
					cout << "true" << endl;
				}
				结果为true,因为p和q指向的地址相同.
			(2)但该类型指针不可以进行直接赋值.
				eg: void *p;
					*p = 1234;
				这样写是错的,因为系统无法识别指针p的变量类型,所以无法直接给它赋值.智能通过&进行取地址赋值.
				因为这一限制,导致它一般是用于与其他指针进行比较,进而判断该指针的数据类型.或者是当强制类型转换用.
		9.指针变量的使用:
			(1)对于指针变量的初始化赋值,只能是通过取地址符&操作.
				eg: int a = 1;
					int* p = &a;
					不能直接是:int* p = 1;
			(2)对于指针指向数据的修改,可以直接给值.
				eg: int a = 1;
					int* p = &a;
					*p = 2;
					此处可以通过指针变量修改变量a中的数据.
			(3)运算符*用于返回指针指向的内存地址的值.
				eg: int* p = 2;
					*p = 1;
					cout << p << endl;
					此处p前加个*,表示返回指针p所指内存地址的值,也即存放的数字2.
					单独的p,表示指针p所指向数据的内存地址,也即就是一个地址.
			(4)注意了,指针只是一个存放地址的变量,它所占的内存空间极其有限.
	*/
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值