C语言之指针操作

存储属性

静态存储属性,栈(动态存储属性)

静态存储属性:变量在定义时候就分配好空间
栈变量:变量在使用时分配空间,使用后释放空间

判断标准:
    静态存储属性变量:全局变量

    局部变量,若有static修饰,则是静态存储属性;
              若没有static修饰,则是栈变量

二维数组初始化

   static int  array[3][4] = {{1,2,3,4},{4,5,6,7},{3,4,6,9}};

也可以初始化部分值

    static int array[3][4] = {{1},{3},{4}};

也可以对全部数组初始化,但不指定第一维的长度,而第二维的长度必须指定

   static int array[][4] = {1,2,3,4,5,6,7,8};


 int a[5]


 a  数组名:数组的首元素的地址,即a[0]的地址
 &a 数组的地址


 *&a == a这两者是相等的

 公式:

   数组地址 = &数组首元素地址
   数组首元素地址 = *数组地址

    a            &a        数值上大小是相等的,但含义不同
    a+1          &a+1      这两个不等,a+1相当于加了一个元素,即为a[1]的地址,&a+1是加了一个数组

    二维数组

    int b[5][2]    看成是由5个一维数组组成的数组

    数组名:数组首元素的地址

    b:数组首元素地址,即表示第0个一个数组地址

    b[0][0]      **b这两者等价 *(*b+0)     *b表示第0个一维数组地址
    b[0][1]        *(*(b+0)+1)


    b[i][j]         *(*(b+i)+j)   (b+i)第i个数组首元素的地址,*(b+i)+j第i个数组的第j个元素的地址,*(*(b+i)+j)为b[i][j]

    b !=  &b[0][0]
    b == &&b[0][0]
    *b == &b[0][0]
    b[0] 相当于   int x[2]中的x,第0个一维数组中首元素地址即第0个元素的地址
    b[0] == &b[0][0]

    公式:

        数组地址 == &数组名 = &数组首元素地址
        数组首元素地址 == *数组地址

        二维数组地址法:

        int b[5][2]

        可以看成是有5个一维数组组成的数组

           数组名 b: 数组首元素地址
           数组首元素     ----由两个int型变量组成的一维数组,即一维数组的地址

           **b =*&b[0][0] = b[0][0]
           *b = *&&b[0][0]                 *b表示一维数组中第0个元素的地址
           *b+1  = &b[0][1]
           *(*b+1) == b[0][1]
           *(b+i)+j  = &b[i][j]

           *(*(b+i)+j ) = b[i][j]  = *(b[i]+j)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值