C语言指针操作详细过程

C语言指针操作主要分为三步


第一步 : 所有变量都保存在内存中,我们打印一下变量的存储地址

第二步:所有变量都可以保存某些值,接着赋值并打印*/    
第三步:使用指针:1取值  2

举例说明:

void test()
{
    int  a;
    int  *p;
    char *t;

    /*第一步 : 所有变量都保存在内存中,我们打印一下变量的存储地址*/
    printf("&a =%p\n",&a);    //打印结果是a的地址
    printf("p=%p\n",p);         //打印结果是p的地址
    printf("t =%p\n",t);          // 打印结果是t的地址

    /*第二步:所有变量都可以保存某些值,接着赋值并打印*/    
    a = 0x12345678;
    p= &a;                                 //把a地址赋给p
    t = (char *)&a;                   //因为指针t是char型的,所以要转换类型
    printf("a =0x%x\n",a);       //打印结果是0x12345678
    printf("p =%p\n",p);        //打印a的地址
    printf("t =%p\n",t);          //打印a的地址

    /*第三步:使用指针:1)取值  2)移动指针*/
    printf("*p=0x%x\n",*p);             //打印结果*p=0x12345678.

                                                      //解释:*是取值,p现在存放的是a的地址,*p是以p里存放的内容(a的地址)

                                                       //当做地址继续寻找取出a地址里的内容
    printf("t=%p\t",t);    printf("*t =0x%x\n",*t); t=t+1;//打印结果*t=0x12. 

                                                                             //解释:同*p解释一致,不过*t是char型,它只能取出一个字节的内容


    printf("t=%p\t",t);    printf("*t =0x%x\n",*t); t=t+1;//打印结果*t=0x34

    printf("t=%p\t",t);    printf("*t =0x%x\n",*t); t=t+1;//打印结果*t=0x56
    printf("t =%p\t",t);    printf("*t =0x%x\n",*t);   // 打印结果*t=0x78
    printf("//=================\n");
}

运行结果

用图说明

 

移动指针
&变量,目的:获得变量在内存中的地址
      返回: 变量在内存中的起始地址

结论:指针变量所存储的内容是所指向的变量在内存中的起始地址。


指针对连续空间进行操作时:
1)取值   
2)移动指针


指针加数值的问题
抽象T *t; t是一个指针变量,里面装的是一个地址值。
          经过t=t+n(数值),t的值增加了n*sizeof(T)个字节
        

char ca[3]={'A','B','C'};
char *pc = ca;
      pc是指向字符数组的字符指针,pc就是数组首元素的地址,pc=&a[0]

char *pc="abc";
      pc是指向字符串的字符指针,pc就是字符串"abc"的首字符'a'的地址
    
    
    
    
    
    
    
    
    
    
    
    
    
    


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值