C语言学习笔记——指针初识

文章目录


前言

指针是C语言中一个非常重要的概念,也是C语言的特色之一。通过指针可以处理复杂的数据、对计算机的内存分配进行控制,以及在函数调用中使用指针可以返回多个值。下面将对指针从浅到深进行学习,掌握其基本的使用方式,以及实现熟练地运用指针简化处理编程问题。


一、认识指针

  1. 内存单元:内存空间切割成小分,大小:1byte(8 bit = 1 byte)。
    • 1bit——相当于0或1
    • char型1字节     int型2字节    float型4字节   double型8字节
  2. 地址:内存单元的编号(”&“地址运算符)。
  3. 指针:内存中最小单元的编号,也就是地址。本质上:地址=指针。
  4. 指针变量:存放内存地址的变量(常说的指针其实指的是 指针变量 ),指针变量所取的地址是第一个字节的地址。(“变量”就是可以被赋予值的东西)
    int main()
    {
        int a = 1;//在一个内存单元所存储的值
        int *p = &a;//将a变量的地址编号赋予p,p即为指针变量
        printf("%d",a);//直接访问
        printf("%d",*p);//间接访问,先访问地址,在通过地址访问值
        return 0;
    }
    int main()
    {
        int a =100;//赋予a变量一个值
        int *p = a;//取a变量的地址
        *P = 0;//将a变量地址的值改为0
        return 0;
    }

    如图所示:

                    

         5.电脑能编址的空间:

        


二、指针类型的应用

1.字节访问

指针类型决定了指针在解引用的时候访问几个字节,因此可以利用各指针类型所占字节大小的不同之处,实现对内存单元进行部分修改。

int mian ()
{
    int a =11223344;//int型占4个字节-->44 33 22 11
    int *pa = &a;//取a地址
    *pa = 0;//四个内存单元均变成0-->00 00 00 00
    //char* pc = (char*)&a;
    //强制类型转换
    //*pc = 0;
    //此处与int不同的是char只占一个字节,所以只有内存单元最上方的数值变为0-->00 33 22 11
    return 0;
}

2.基本运算

指针变量的运算方式由指针变量的类型决定

int main ()
{
    int a =110;
    int *pa = &a;//int型
    char *pc =(char*)&a;//char型
    
    printf("pa = %p\n",pa);
    printf("pa+1 = %p\n",pa+1);//地址+4字节,006FF9F8-->006FF9FC
    printf("pc = %p\n",pc);
    printf("pc+1 = %p\n",pc+1);//地址+1字节,006FF9F8-->006FF9F9

    return 0;
}

总结

本文对指针的概念、赋值、运算进行简单的介绍,初步了解指针的内部结构,以及学习了如何通过运用指针类型的差异对数值进行修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值