对于指针的理解(指针和指针变量)

先上代码:

int main()
{
	int a = 10;
	int b = 20;
	int c = 30;
	int *p1;
	int* p2;
	int *p3 = &c;
	p1 = &a;
	p2 = &b;
	cout << "a的地址是:" << &a << endl;
	cout << "b的地址是:" << &b << endl;
	
	cout << "指针变量p1所指向的地址是:" << p1 << endl;
	cout << "指针变量p2所指向的地址是:" << p2 << endl;
	
	cout << "指针变量p1本身的地址是:" << &p1 << endl;
	cout << "指针变量p2本身的地址是:" << &p2 << endl;
	
	cout << "指针变量p3指向的地址的变量的值:" << *p3 << endl;//p3指向整型变量c

	system("pause");
	return 0;
}

结果:
在这里插入图片描述
为了便于理解,我们这样区分:

指针:是其他普通变量在内存中的首地址。
&a就是得到a的地址,其实“指针==地址”
指针变量:存放其他变量地址的那个变量。比如上面代码中的p1、p2就是指针变量。
所以:
指针是个首地址,是个整数,是个常量;指针变量是个变量。

注意在定义时使用的*只是用来说明该变量为指针变量,无其他作用,这里要与间接寻址运算符 *要区分开来,寻址运算符 *加在指针变量前面,返回指针变量所指向的地址的变量的值。如*p3

由此我们可以:
1、便于理解双指针, 明白指针(变量)本身亦有其地址
2、明白空指针即是被赋值为0的指针(变量)
3、声明一个指针指向开辟的空间即是,创建一个指针变量,开辟一块空间并将其首地址赋值给指针变量

tips:
1、很多时候,对指针变量和指针并不做区分,因为大多数说的都是指针变量,往往省略”变量“二字,直接叫指针,注意不要混淆。

2、定义指针变量时,*运算符两边的空格是可选的。

Int* p;// 强调int*是一种类型
Int *p;// 强调*p是int型的值

这两种写法均可,对于编译器来说没有任何区别

参考:
C++中指针和指针变量

指针及指针变量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值