免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3398 | 回复: 10
打印 上一主题 下一主题

急问一个在函数内定义数组的简单问题 谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-12 21:23 |只看该作者 |倒序浏览
5可用积分
我在一个函数如int a(int b)内定义了一个数组,double a[N][M],接着给数组a赋值,后来发现数组a赋值失败,请问为什么?如何解决?
难道在函数内不能直接定义数组并赋值吗?是不是要用malloc或者new,如果不能,为什么不能呢?
谢谢

最佳答案

查看完整内容

必須定義時初始化. 而且你函數名和變量名一樣.

论坛徽章:
0
2 [报告]
发表于 2007-12-12 21:23 |只看该作者
必須定義時初始化. 而且你函數名和變量名一樣.

论坛徽章:
0
3 [报告]
发表于 2007-12-12 21:39 |只看该作者
因为N和M是变量,如何在定义时初始化呢?
我的代码:
double  As[lNRA][lNCA];
for(iiii=0;iiii<lNRA;iiii++)
  for(jjjj=0;jjjj<lNCA;jjjj++)
As[iiii][jjjj]=coords[0]*dims[0]+iiii+coords[1]*dims[1]+jjjj);
结果没赋上值
很奇怪

[ 本帖最后由 richardzhang 于 2007-12-12 21:54 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-12-12 22:17 |只看该作者
呵呵, 既然代码出来了,为什么不调试一下看看呢?

通常数组得初始化就是按照内存里面存放顺序来书写,且只能初始化为常量。

比如 int a[3][2] = { {0,  1,  2},
                               {3, 4,  5 },
                            } ;

论坛徽章:
0
5 [报告]
发表于 2007-12-12 22:22 |只看该作者
我犯了个小错误,刚发现

论坛徽章:
0
6 [报告]
发表于 2007-12-12 22:25 |只看该作者
  我喜欢调试代码胜过看代码,你呢

论坛徽章:
0
7 [报告]
发表于 2007-12-12 22:26 |只看该作者
你至少也应该给出一段重现你错误的简短代码吧?就这么说,谁能猜出问题在哪里呢?

动态数组是 C99 所支持的,例子如下


  1. #include<stdio.h>

  2. int f(int n, int m)
  3. {
  4.         int i,j;
  5.         double a[n][m];

  6.         for (i=0; i<n; i++)
  7.                 for(j=0; j<m;j++)
  8.                         a[i][j]=0.1234;

  9.         for (i=0; i<n; i++)
  10.                 for(j=0; j<m;j++)
  11.                         printf("%f\n", a[i][j]);
  12. }

  13. int
  14. main ()
  15. {
  16.         f(3,4);
  17. }
复制代码

$ ./a.out
0.123400
0.123400
0.123400
0.123400
0.123400
0.123400
0.123400
0.123400
0.123400
0.123400
0.123400
0.123400

论坛徽章:
0
8 [报告]
发表于 2007-12-12 22:43 |只看该作者
回楼上版主,为了保持俺程序得兼容性,俺仍然遵守 老得标准,是C89吧。

论坛徽章:
0
9 [报告]
发表于 2007-12-12 23:14 |只看该作者
原帖由 agaric 于 2007-12-12 22:43 发表
回楼上版主,为了保持俺程序得兼容性,俺仍然遵守 老得标准,是C89吧。


这算是尊老吗

论坛徽章:
0
10 [报告]
发表于 2007-12-12 23:17 |只看该作者
俺是做嵌入式系统得,经常要根一些稀奇古怪得编译器打交道。 之前用得 东芝编译器还是纯dos程序,90年代初的东西,你说我敢不尊老吗?

不过现在也用上ARM了,用上ADS了,总算是鸟枪换炮了。强悍得编译器,不需要理由。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP