指针的初始化和赋值(简单说明)

突然关于指针有个地方搞不明白,比如int *p=&a;我们不是说"*"是取值的吗,那么后面不应该跟的是一个数值,怎么是一个地址?

1、指针的初始化

指针初始化时,“=”的右操作数必须为内存中数据的地址,不可以是变量,也不可以直接用整型地址值(但是int*p=0;除外,该语句表示指针为空)。此时,*p只是表示定义的是个指针变量,并没有间接取值的意思

int a=6;
int *p=&a;(这句意思是p指向a的地址,并没有给指针p赋值的意思)
int b[10];

int *point = b;  (b是数组,一维数组名代表数组首地址) 

或者int *p = &b[0];

2、指针的赋值

指针的赋值,“=”的左操作数可以是*p,也可以是p。

当“=”的左操作数是*p时,p所指向的是对应地址存放的数据;

当“=”的左操作数是p时,p所指向的是地址。

int *p;

int a;

int b[1];

p = &a; 

*p=a;

p = b;

数组的变量名b表示该数组的首地址,因此p=b;也是正确的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值