weixin_40993974
2017-11-30 14:09
采纳率: 100%
浏览 1.2k
已采纳

关于c语言中二维数组形参的问题

对于二维数组比如一个double number[m][n]
既然number 和number[0]的值都是number[0][0]的地址 那么这两者有什么区别呢
当我定义了一个函数 这个函数用来把一个二维数组的值copy到另一个二维数组 这个函数的形参为什么只能写double number[][n]而不能直接写double * number呢

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 战在春秋 2017-11-30 22:04
    已采纳

    number 和 number[0] 虽然值相同,但它们分别表示的意义并不相同。

    number 是 二维数组第0行的行地址,number + i 指向不同行。
    number[0] 是 二维数组第0行第0列的元素地址,number[0] + i 指向具体的数组元素。
    

    要想使number也可以参加表示具体数组元素的地址,需要使用如下形式:

     *(number+i)+j  
    

    二维数组的行地址和元素地址是两个不同的概念,表示方法有很多种,实践中推荐您选择自己容易理解的形式。

    对于第二个问题,应该用 double** number,即二级指针对应二维数组。

    如果对您有帮助,请点击采纳答案好吗,谢谢~~

    已采纳该答案
    打赏 评论
  • 龙跃十二 2017-11-30 14:35

    这个图是number[0][0]和number[0]的区别
    图片说明

    打赏 评论
  • 龙跃十二 2017-11-30 14:39

    你实参传的是数组,形参可以用数组可以用指针 这里你要用 double *number[n]

    打赏 评论

相关推荐 更多相似问题