xsy199032
2018-01-21 11:57
采纳率: 0%
浏览 1.5k

c语言二级指针与一维数组的问题

在c语言中用二级指针指向一维数组,(*变量名)的值为什么与数组名的值不一样啊图片说明

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • threenewbee 2018-01-21 12:06

    buf是数组的指针,也是数组首元素的指针。
    myp是数组的指针的指针,也就是它是代表一个地址,这个地址上存放的数字是一个指针,这个指针指向buf数组首元素。
    指针也是一个值,它是一个整数,指针也需要一个内存单元(通常4字节)存放,只是这个整数是表示一个地址的值。因此指针和一般变量一样,也可以取地址。

    评论
    解决 无用
    打赏 举报
  • zyhxdlhupc 2018-01-21 12:16

    图片说明
    其实你的问题出在对buf的理解上。buf[10]是一个数组,buf是数组名。那么单独使用buf的时候,buf就已经退化成了指针。其实buf与&buf的值是一样的,都是数组中第一个元素的地址。
    你看图片中选中的那4个,你会发现他们的地址都是一样的。

    评论
    解决 无用
    打赏 举报
  • 林子xxx 2018-01-21 12:19

    &buf其实与buf地址是一样的。至于怎么运算,得看编译器。也就是&buf本来就不等于*myp;

    评论
    解决 无用
    打赏 举报
  • qq_38424889 2018-01-21 12:40

    数组名称表达时候包含数组中全部元素,只能在名称后添加序号才能取到具体指,在后面括号中无数字时,系统会默认为起始位0,变量名当然不能和数组名一致,如果一致会导致变量变化导致数组中全部元素的变化!!!

    评论
    解决 无用
    打赏 举报
  • xiaoqiang_826 2018-01-21 13:07

    &buf代表的不是取buf这个变量的地址,而是取数组元素的地址。虽然&buf和buf得内存地址相同,但它们的意义不相同,它是代表整个数组的,它的进阶单位是整个数组的字节长度(这里是10*1=10)

    评论
    解决 无用
    打赏 举报
  • yuanandwang 2018-01-21 14:06

    buf[10]是一个数组,buf是数组名。那么单独使用buf的时候,buf就已经退化成了指针。其实buf与&buf的值是一样的,都是数组中第一个元素的地址。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题