Dragon  
Dragon
日历
<2012年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456
统计
  • 随笔 - 58
  • 文章 - 0
  • 评论 - 55
  • 引用 - 0

导航

常用链接

留言簿(3)

随笔分类(58)

随笔档案(58)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 
写C++程序函数部分,传递数组往往已造成错误。总结一下
1,数组形参的定义。
如果要编写一个函数,输出int型数组的内容,可以用下面三种方式指定数组形参:
void printValues(int*)
void printValues(int[])
void printValues(int[10])
注意:不需要修改数组形参的元素时,函数应该将形参定义为指向const对象的指针
void f(const  int*)
2,多维数组的传递
除了第一维以外的所有维的长度都是元素类型的一部分,必须明确指定:
void printValues(int (*matrix)[10], int rowSize)
void printValues(int matrix[][10], int rowSize)//这个更直观.

//下面是例子
#include<iostream>
using namespace std;
//一维数组形参
/*
void print(int *a)
{
cout<<*a<<" "<<*(a+1)<<" "<<*(a+2)<<endl;
}
*/
/*
void print(int a[])
{
cout<<*a<<" "<<*(a+1)<<" "<<*(a+2)<<endl;
}
*/
/*
void print(int a[3])
{
cout<<*a<<" "<<*(a+1)<<" "<<*(a+2)<<endl;
}
*/
/*
void print(int a[3])
{
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl;
}
*/
/*
void print(int *a)
{
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl;
}
*/
/*
void print(int a[])
{
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl;
}
*/
//上面哪一种都行
int main()
{
int a[3]={2,1,3};
print(a);
return 0;
}











//多维数组作形参
#include<iostream>
using namespace std;
//三选一
//void print(int (*matrix)[3],int rowsize)
//void print(int matrix[2][3],int rowsize)
void print(int matrix[][3],int rowsize)
{
for(int i=0;i<rowsize;i++)
{
  for(int j=0;j<3;j++)
  {
   cout<<matrix[i][j]<<" ";
  }
  cout<<endl;
}
}
int main()
{
int a[2][3]=
{
  1,2,3,
  4,5,6
};
print(a,2);
return 0;
}
posted on 2008-09-02 20:15 Dragon 阅读(1082) 评论(1)  编辑 收藏 引用 所属分类: C++
评论:
  • # re: 数组形参  qlcms_DL Posted @ 2012-08-29 13:08
    其它我没看,我只看了你的数组形参的定义部分。
    事实上:
    void printValues(int*)
    void printValues(int[])
    void printValues(int[10]),这三种表示都产生了一种效果,数组作为形参传递时已经退化为指针了,其实应该说还有另一种有意义的表示:
    void printValues(int (&)[3]);(只能传递数组个数为3的一维数组)。

    仅属看法,是否严谨就没有考虑了。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


 
Copyright © Dragon Powered by: 博客园 模板提供:沪江博客