| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 447 人关注过本帖
标题:求助 二维数组名作实参时,形参的问题
取消只看楼主 加入收藏
c759541810
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-2-4
结帖率:0
收藏
 问题点数:0 回复次数:0 
求助 二维数组名作实参时,形参的问题
书上说,  当二维数组名作为实参时,对应的形参必须是一个行指针变量。如
#include<stdio.h>
#define  M  5
#define  N  3
main()
{double  s[M][N];
        ......
      fun(s);
         ......
}
      则fun函数的首部可以是以下三种形式之一:
   (1)fun(double  (*a)[N]  )
      (2)    fun  (double   a[][N]  )
      (3)     fun   (double   a[M][N]  )
列下标不可缺。   
无论是哪种形式,系统都将把a处理成一个行指针。

问:
(a)  难道以上三种形式在系统中都是一样的么??    那这么说M的值就没有任何意义了么??   
是不是M的值就可以随便写了,不一定和主函数中的数组s中的M值一样么???
     


    (2)书上还说,  在函数中引用的将是主函数中的数组元素,系统只为形参开辟了一个存放地址的存储单元      
     ,不可能在调用函数时为形参开辟一系列存放数组的存储单元。
      (b) 怎么能只开辟了一个存储单元呢?那  函数fun的首部写成这样
     fun(double a[M][N] )  难道系统也是为形参a开辟一个存储单元么,不是开辟一个数组么??行下标M,                                    
      列下标N 两个下标 都没有意义了么???那  M  还有什么意义??N  还有什么意义???
 (2)就算形参写成数组形式,系统都只为形参开辟一个存储单元么???
       是不是不管下标如何,形参都不会有数组越界的可能????

  一维数组形式作形参, 二维数组形式作形参  都不会有越界问题吗????
搜索更多相关主题的帖子: 函数 include double 
2012-02-29 22:21
快速回复:求助 二维数组名作实参时,形参的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033545 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved