c++c语言二维动态数组数组声明是怎么申明的?

2016年10月优秀大版主2016年8月优秀大版主
2016年9月 总版技术专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。怎么将主函数中的二维数组应用到我新定义的调用函数里? 求教只…【c++吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:291,922贴子:
怎么将主函数中的二维数组应用到我新定义的调用函数里? 求教只…收藏
#include&stdio.h&int main(void){int i,j,repeat,n;static int score[10];static int bowling[10][3];int next1(int i);void bubble(int score[],int n);
for(repeat=0;repeat&10;repeat++){/*10个人*/
for(i=0;i&10;i++){
for(j=0;j&3;j++){
scanf("%d",&bowling[i][j]);
/*没有击球的记作11,滚球没有击中一个的记作0*/
for(i=0;i&9;i++){
/*计算前九轮*/
for(j=0;j&3;j++){
if(bowling[i][0]==10){
score[repeat]=score[repeat]+10+bowling[i+1][0]+next1(i);
if( ((bowling[i][0]+bowling[i][1])==10)&&(bowling[i][0]!=10) ){
score[repeat]=score[repeat]+10+bowling[i+1][0];
if((bowling[i][0]+bowling[i][1])&10){
score[repeat]=score[repeat]=bowling[i][0]+bowling[i][1];
if(bowling[9][0]==10){ /*单独计算第十轮*/ score[repeat]=score[repeat]+10+bowling[9][1]+bowling[9][2]; }
if( ((bowling[9][0]+bowling[9][1])==10)&&(bowling[9][0]!=10) ){ score[repeat]=score[repeat]+10+bowling[9][2]; } if((bowling[9][0]+bowling[9][1])&10){ score[repeat]=score[repeat]+bowling[9][0]+bowling[9][1]; }}
/*soluted 10 scores,use score[repeat]*/ bubble(score,n);
/* 将分数由低到高排序并且输出*/for(i=0;i&n;i++){
printf("%3d",score[i]);}
return 0;}void bubble(int score[],int n){
int i,j,t;
for(i=1;i&n;i++){
for(j=0;j&n-i;j++){
if(score[j]&score[j+1]){
t=score[j];score[j]=score[j+1];score[j+1]=t;
}} int next1(int i){
if(bowling[i+1][0]==10){
return bowling[i+2][0];
return bowling[i+1][1];
就是最后定义一个NEXT1函数 我想用他来判断bowling[][]是不是10,然后返回不bowling的内容.... 编译以后说新函数中的BOWLING是不可识别的  undeclared identifier...
c++培训课程,美国上市公司&达内&出品c++课程,15年教学经验,总监级c++讲师亲授!!达内首创&先就业后付款&模式.名企项目总监授课,成就&稀缺级&c/c++软件工程师
原因是 那个数组是在 main中定义的
而你在next1函数中调用
next1中是找不到那个数组的即 未定义解决的话 不如把数组当作参数传递给 next1即给你的 next1函数 加个参数
在主函数中调用时
bowling[][]是数组变量,你可以用传参,全局变量。用传参的比较多,大程序里全局变量用不好容易出事,改的话也比较困难。
登录百度帐号推荐应用int **a &= &new int* [m] &&//分配一个指针数组,将其首地址保存在a中 & 、
for(int i = 0; i & i++) &&//为指针数组的每个元素分配一个数组
& & & &a[i] = new int [n];
相当于产生了一个二维数组 a[m][n]了
静态声明的数组可以有公式(假设也是m行n列)
& & & & & & & & & & & & & & & & & & & & & b[i][j] = b[i*n +j]
这是因为数组b是连续的一片内存,而动态声明的数组任意的a[k]都是一个int*类型,即一个地址,所以只能a[i][j]或者*(*(a+i) + j)来访问数组的元素,而不能a[i*n + j]使用。
动态声明的数组,使用后需要释放内存。
for(int i = 0; i & ++i)
& & & delete []a[i];
delete []a;
1 #include &iostream&
2 #include &stdlib.h&
4 using namespace
7 int main()
<span style="color: #
cin && row &&
<span style="color: #
//申请空间
<span style="color: #
new int* [row];
<span style="color: #
for(int i = <span style="color: #; i & i++)
<span style="color: #
a[i] = new int[column];
<span style="color: #
<span style="color: #
//使用空间
<span style="color: #
for(int j = <span style="color: #; j & j++)
<span style="color: #
for(int k = <span style="color: #; k & k++)
<span style="color: #
a[j][k] = rand() % <span style="color: #0;
<span style="color: #
<span style="color: #
for(int j = <span style="color: #; j & j++)
<span style="color: #
<span style="color: #
<span style="color: #
for(int k = <span style="color: #; k & k++)
<span style="color: #
cout && a[j][k] && " ";
<span style="color: #
<span style="color: #
//释放空间
<span style="color: #
for(int i = <span style="color: #; i & i++)
<span style="color: #
delete []a[i];
<span style="color: #
<span style="color: #
<span style="color: #
return <span style="color: #;
<span style="color: # }
//方法二,利用vector创建二维数组
2 #include &iostream&
3 #include &stdlib.h&
5 using namespace
<span style="color: #
cin&&row&&
<span style="color: #
<span style="color: #
//申请空间
<span style="color: #
vector&vector&int& & a(row,vector&int&(column));
<span style="color: #
<span style="color: #
<span style="color: #
//使用空间
<span style="color: #
for(int j = <span style="color: #;j &j++)
<span style="color: #
for(int k = <span style="color: #;k&k++)
<span style="color: #
a[j][k] = rand()%<span style="color: #0;
<span style="color: #
<span style="color: #
for(int j = <span style="color: #;j &j++)
<span style="color: #
<span style="color: #
<span style="color: #
for(int k = <span style="color: #;k&k++)
<span style="color: #
<span style="color: #
a[j][k] = rand()%<span style="color: #0;
<span style="color: #
cout&&a[j][k]&&"
<span style="color: #
<span style="color: #
<span style="color: #
return <span style="color: #;
<span style="color: # }
阅读(...) 评论()C++怎么定义一个动态二维数组11-12-10下载知道客户端,10分钟内有问必答最佳答案int*,C++怎么定义一个动态二维数组-爱问知识网
C++怎么定义一个动态二维数组
int **pa触骇鞭较庄记彪席波芦rray = new int8[5];for (int i=0 i&5; ++i){
parray[i] = new int(0);}for (int i=0; i&5; ++i){
delete parray[i];}delete[]
int x,y,**p;cin&&x&&y触骇鞭较庄记彪席波芦;p=new int*[x];for(int i=0;i&x;i++)
p[i]=new int[x];
int row,cin && row &&int** ptr = new int* [row];for(int i=0; i& i++){ptr[i] = new int [col];}
&#47;&#47;使用之后一定要记得释放内存for(int j=0; j& j++){delete [] ptr[j];}delete []
#include &vector&typedef vector&vector&int& &这样matrix就是二维数组了,可以用push_back()动态往里面添加元素 ,不用预先定义数组大小
两种方法:1.转化为一维数组申请2.先申请全部行首指针,再按行逐行申请1.a=(int *)malloc(sizeof(int),(unsigned)m*n);使用的时候就和一般的二维数组一样。举个例子给你:#include &stdlib.h& #include &stdio.h& #include &malloc.h& int main() { int i,j; &#47;&#47;这个就是需要指定的行数int (*p)[10]; scanf(&%d&,&n);&#47;&#47;取得行数&#47;&#47;动态生成二维数组,指定列数为10,如果想改,自己该里面 的参数,如果想定义n行2列就为: p=(int (*)[2])malloc(n*2*sizeof(int)); p=(int (*)[10])malloc(n*10*sizeof(int)); &#47;&#47;动态申请n行10列的二维数组for(i=0;i&n;i++) for(j=0;j&10;j++) p[i][j]=i*j; for(i=0;i&n;i++) { for(j=0;j&10;j++) printf(&%d,&,p[i][j]); printf(&&#92;n&); } free(p); return 0; }2.这个也给你举个例子吧:#include &stdio.h& #include &malloc.h& main() { int i = 0; int j = 0; int line = 0; int row = 0; int **p = NULL; printf(&input the line of the array:&#92;n&); scanf(&%d&, &line); printf(&input the row of the array:&#92;n&); scanf(&%d&, &row); p = (int **)malloc(sizeof(int *) * line); if (NULL == p) {
} for (i = 0; i & i++) {
*(p + i) = (int *)malloc(sizeof(int) * row);
if (NULL == *(p + i))
} } &#47;*input data*&#47; for (i = 0; i & i++) {
for(j = 0; j & j++)
p[i][j] = i + 1;
} } &#47;*output data*&#47; for (i = 0; i & i++) {
for(j = 0; j & j++)
printf(&%d&, p[i][j]);
} } &#47;*free every line p......

我要回帖

更多关于 c语言二维动态数组 的文章

 

随机推荐