• C、指针基础3


    11、 数组与指针:

         指针的类型决定了指针的操作规则。int *p1  指针*p1一次操作4字节空间,float* p2指针*p2一次操作 4字节空间,double* p3指针*p3一次操作8字节空间

         指针可以进行加减运算,且只能进行加减运算,名字叫指针的偏移。加减n,实为加减n个类型的大小。

         p1+1   1为sizeof(int)              4

         p2-2    2为sizeof(float)*2       8  

         p3+3   3为sizeof(double)*3   24

    12、一维数组与指针

         一维数组int a[5]={1,2,3,4,4}每个元素类型都是一样的,且空间是连续的。

            &a[0]+1==&a[1]

            &a[0]+2==&a[2]

            &a[4]-1==&a[3]

    每个元素都是int类型的,可以用指针装地址。

           int *p=&a[0];

    则:

         p+0==&a[0]                     a[0]==*&a[0]==*(p+0)==*p

         p+1==&a[1]                     a[1]==*&a[1]==*(p+1)

         p+2==&a[2]                     a[2]==*&a[2]==*(p+2)

         p+3==&a[3]                     a[3]==*&a[3]==*(p+3)

         p+4==&a[4]                     a[4]==*&a[4]==*(p+4)

    注意:*(p+1)一定要加小括号,因为加法的优先级低于*。

               *(p+1) 先执行p+1为&a[1],再取*,为a[1], 成为具体的值。

               *p+1先执行*p,若为具体的值是8,再+1为9。

    13、数组的属性:数组名是首元素的的首地址:&a[0]==a。

    int *p=&a[0];、

    int *p =a;

    二者一摸一样,平时都是用第二种的。

    14、下标运算符:[]

       *(p+4)==p[4]==4[p]。

    15、一维数组指针

    数组是一个变量,它里面有很多小元素,对元素取地址,得到的是元素地址,对数组名取地址,得到的是数组的地址,又称数组指针(地址)。

      int a[5]={123,13,56,32,4};

      int (*p)[5]=&a;    //p就是一维数组指针变量

    类型思路:int[5]是数组类型,指针指向它,int[5]*p,但 c语言要求写成int(*p)[5],必须加上小括号,不加int*p[5]就是指针数组,因为[]的优先级要高于*,先跟*结合,p就是指针,先跟[]结合,p就是数组。

    注意:&a与&a[0]数值一样,类型不一样,进行+1,&a是数组的地址,+1加的是整个数组的大小,&a[0]是数组中首个元素的地址,+1是加一个元素的大小。(因为首元素地址与整个数组的地址重合)。

  • 相关阅读:
    数据库Mysql事务,JDBC事务
    学JAVA好?还是学Python好?
    javascript之防抖(debounce)和节流(throttle)
    Vue模板语法
    【web-攻击后端组件】(7.2)操作文件路径、注入XML解释器、注入后端HTTP请求、注入电子邮件
    BootStrap 编辑日期 laydate 编辑界面日期
    一次日常需求处理带给我的思考
    SpringMVC如何转发及重定向(forward、redirect)
    5大数据结构
    不要只会刷d音了
  • 原文地址:https://blog.csdn.net/qq_52119661/article/details/126497481