指针(*)、取地址(&)、解引用(*)

  1. 初步了解——指针与取地址
 #include<stdio.h>
     
    int main(void)
    {
    	int num = 7;
    	int *p = &num;//初始化指针,也可以写作int* p = &num;
    	printf("%d 的地址是 %p\n", num, p);
    	return 0;
    }

上面int *p定义了一个指向int类型指针p(我们使用 " * " 符号把p声明为指针),并初始化p使其指向int类型的变量num,这里&num中的&是取地址操作符,当&作用于一个对象上时,它返回了该对象的地址。所以这里指针p指向了num所对应的地址。(我测试时输出了0028FF1C).

  1. 如何使用指针?——解引用与指针赋值
    #include<stdio.h>
     
    int main(void)
    {
    	int num = 7;
    	int *p = &num;
    	printf("%d所在的地址是 %p\n", num, p);
    	printf("p所指向的地址为%p,该地址上所保存的值为%d\n", p, *p);
    	*p = 100;
    	printf("p所指向的地址为%p,该地址上所保存的值为%d\n", p, num);
    	return 0;
    }

注意这里操作符为解引用操作符,它返回指针p所指的对象(左值).
我们可以对
p赋值(对左值赋值),从而改变p所指的地址上所保存的值,从而改变此地址所存储的变量num的值。(上面num的值变为100).
当然,我们也可以给指针p赋值,使其指向另外一个地址(这样就改变了在解引用时获取的左值):

    #include<stdio.h>
     
    int main(void)
    {
    	int num = 7, another = -5;
    	int *p = &num;
    	p = &another;
    	printf("%d\n", *p);
    	//此时p指向了another,所以输出了another的值,即-5
    	return 0;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值