指针的简单实践

本文通过一个C语言代码示例,详细解析了指针如何存储变量地址、如何通过指针修改变量值以及指针的赋值操作。在示例中,指针ptr_num1和ptr_num2分别指向了变量num1和num2,通过*ptr_num2=*ptr_num1实现了num2的值被更新为num1的值。随后,通过ptr_num2=ptr_num1,使两个指针指向了同一地址,从而改变了ptr_num2的内容而不改变其地址。文章强调了指针作为地址变量的特性以及通过指针操作内存的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

完整代码

#include <stdio.h>
int main()
{
    int num1 = 1024;
    int num2 = 2048;
    int * ptr_num1 = NULL;
    int * ptr_num2 = NULL;
    ptr_num1 = &num1;
    ptr_num2 = &num2;

    //输出两个变量的值和地址
    printf("num1 = %d\tnum1的地址是:%p\n", num1, ptr_num1);
    printf("num2 = %d\tnum2的地址是:%p\n", num2, ptr_num2);
    //通过ptr_num1为ptr_num2赋值
    *ptr_num2 = *ptr_num1;//等价于num2 = num1;  是通过指针直接对值进行操作的
    printf("重新赋值后:\n");
    printf("num2 = %d\tnum2的地址是:%p\n", num2, ptr_num2);//指针所指向的内容发生了改变,但指针指向的地址没有发生改变。

    //将指针ptr_num1的内容赋值给指针ptr_num2,则ptr_num2与ptr_num1指向了同一个地址
    ptr_num2 = ptr_num1;
    printf("ptr_num2指向的内容是:%d\tptr_num2指向的地址是:%p\n", *ptr_num2, ptr_num2);

    return 0;
}

运行结果

num1 = 1024     num1的地址是:0061FF14
num2 = 2048     num2的地址是:0061FF10
重新赋值后:
num2 = 1024     num2的地址是:0061FF10
ptr_num2指向的内容是:1024      ptr_num2指向的地址是:0061FF14
  1. 利用间接运算符*,将指针ptr_num1所指向的内容1024赋值给指针ptr_num2所指向的2048,则ptr_num2的地址不变,但该地址的内容由原先的2048变为了1024,相当于num2 = num1
	*ptr_num2 = *ptr_num1;//等价于num2 = num1;  
    printf("重新赋值后:\n");
    printf("num2 = %d\tnum2的地址是:%p\n", num2, ptr_num2);

运行结果在这里插入图片描述

  1. 指针赋值,将ptr_num1指向的地址赋值给ptr_num2,那么两个指针会指向同一个地址,所指向的内容也是相同的。
	ptr_num2 = ptr_num1;
    printf("ptr_num2指向的内容是:%d\tptr_num2指向的地址是:%p\n", *ptr_num2, ptr_num2);

运行结果

在这里插入图片描述

小结

  1. 指针是一个存储了另一个变量的地址的变量;
  2. 指针存储了一个地址,那么通过这个地址就可以找到对应的变量值,即该指针指向了这个变量;
  3. 指针的指向是可以通过指针的赋值改变的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值