指针与数组相关问题的理解

《1》数组的指针是指数组内存中的起始地址,即第一个数组元素的地址;而数组名a代表的是数组a

    的起始地址,一维数组的数组名代表一维数组的指针(起始地址)。

《2》设指针变量px的值等于数组a的地址,则有:

         a[i]<=>*(a+i)<=>*(px+i)<=>px[i]

    功能:访问数组第i+1个元素。

《3》指针变量和数组在访问数组中的元素时,一定条件下其具有相同的形式,因为指针变量和数组名都

    是地址量,但是指针变量和数组的指针在本质上不同:指针变量是地址变量,而数组名是地址常量。

《4》在指针的运用中关于字符串初始化遇到的问题:

    a、char str[]=“welcome beijing”;

       char* p=&str;

    初始化中是把内存中字符串所在的数组首地址赋给指针,该数组中的内容是可以被修改的。

       *p=“i am sir”是正确的。

    b、char* p=“welcome beijing”;

    初始化中,字符指针指向的是一个字符串常量的首地址,指针所指的对象为常量,内容不能被修改。

       *P=“dog”会报错。谨记!!!!!

 

《5》定义指针的类型如:int* p 是为了匹配指针要指的已定义的内存空间的类型如:int [3][4],不论指针

    前面的类型如何,指针永远是4字节空间,只会存储整型的地址。

    注意:void型的指针——>一种不确定数据类型的指针变量,但他可以通过强制类型转换让该变量指向任何

    数据类型的变量或数据。er:

                             void * p;

                              p++;毫无意义

                             (int *)p++;是可以的,但是必须强调每次运算都必须(int *)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值