数组指针和指针数组

1.数组指针和指针数组的定义:

    int *p[5];        //运算符为p[5],后为*,所以为指针数组

    int (*ptr)[5]    //先算(),后是[],ptr指向一个5个连续int空间地址,这段地址是匿名的。


2.int a[5]数组的a和&a的区别,对于以下的程序代码:

     int main()

  {

       char a[5]={'a','b','c','d','d'};

      char (*ptr1)[5]=&a;     //vc编译通过  

      char (*ptr2)[5]=a;      //vc编译出错,不能将指向char字符的指针赋给指向一个char *[5]类型的数组指针;

      return 0;

  }

而且:

    int main()

{

     char a[5];

     char (*ptr3)[6]=&a;    //vc6.0编译出错,cannot convert from 'char (*)[5]' to 'char (*)[10]'

}


4.强制类型转换

    struct test
{
int tint;
char *p1;
short sint;
char ch;
short uint;
}*p;

   sizeof(p)为16;若p的地址为0x00000010

    p+1    实际为0x00000010+sizeof(p)=0x00000020;

    (unsigned int)p+1    为0x00000011;

     (unsigned int*)p+1     为0x00000014 ;

    

 

   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值