首页 > 编程语言 > 详细

C语言小结-数组和指针

时间:2020-05-10 17:11:39      阅读:34      评论:0      收藏:0      [点我收藏+]

 

数组:

  声明方法:

    1.datatype arr[]={0};   //个数由{}内元素个数决定

    2.datatype arr[N];     //N必须大于0

    3.datatype arr[N]={1,2,3};     //{}内个数不能超过N;若个数小于N,则初始化的元素默认为0

    4.datatype arr[5]={1,2,[4]=2,3,[1]=0};   //其元素为:1,0,0,2,3

    5.若N为变量,则arr[N]为变长数组,声明时不允许初始化。

    6.复合字面量:(datatype [N]){1,2,3};   //N可为空;复合字面量必须声明(创建)的同时使用它

  数组的一种理解:一种数据类型——datatype []

 

多维数组:

  声明方法:datatype arr[row_number][column_number];      //row_number可以为空,但是column_number必须填写

  多维数组的一种理解(结合指针):

设 datatype arr[n][m],则arr[n][m]表示的数据类型为储存nxm个datatype数据的(二维)数组;arr[]表示的数据类型为储存n个arr[m]数据的数组。由此可视二维数组为“两层”:第一层储存datatype类型数组arr[],这一层面的指针操作为*(arr(首元素地址)+i),表示arr[i][];第二层储存datatype数据arr[][],这一层面的指针操作为*(*(arr+i)+j),表示arr[i][j]。

对应关系:arr——地址(m*datatype)

      arr+i——地址(m*datatype)

      *(arr+i)——地址(1*datatype)

      *(arr+i)+j——地址(1*datatype)

      *(*(arr+i)+j)——datatype数据

参考图片(来自C Primer Plus):(zippo为数组名)

技术分享图片

 

数组和指针:

  联系的关键:地址

  ??地址的“宽度”由数据类型决定。如int—4 bits。因此对地址进行操作运算,如+,-时,产生的数值变化是以其“宽度”为单位变化的。

  1.数组名是数组首元素的地址    //arr=&arr[0]

  2.指针的一种理解:一种数据类型——datatype *     //设datatype *p,则p表示一个指向datatype类型的指针,对应的是地址;*p 则是对指针的解引用,对应的是datatype类型的数据;&p则表示指针自身的地址,与*p不同。

  3.指针表示和数组表示:

    一维数组:arr[i]==*(arr+i)

    二维数组:arr[i][j]==*(*(arr+i)+j)

  4.指针之间的赋值必须两者指向相同类型

  5.指针操作:(基于运算符*和++优先级相同且结合律从右往左)

    p++:指针指向下一个元素

    *p++ == *(p++):指针指向下一个元素(下次引用时实现)

    (*p)++:*p的值+1(下次实现)

    ++*p == ++(*p):*p的值+1(本次实现)

    *++p:指针指向下一个元素(本次即实现)

 

 

指针数组和数组指针:

  区别的原因:[]运算符的优先级高于*运算符

  数组指针的声明:datatype (*p)[n];       //p是一个指向(储存n个datatype数据的数组)的指针

         (操作:可向其赋值数组名,其他操作与指针&数组表示法一致

  指针数组的声明:datatype *p[n];       //p是一个内含(n个datatype类型指针)的数组

 

函数形参:

  指针形参和数组形参可以通用:datatype Function(datatype *arr/datatype arr[])

  调用时传入数组名或指针:Function(arr)

  ??若要在该调用函数中改变主函数的变量,则须传入指针。

C语言小结-数组和指针

原文:https://www.cnblogs.com/ruanzy/p/12863474.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!