永发信息网

我要定义一个二维数组,但是二维数组的下标只有第一个下标可以确定,这该怎么办呢?

答案:2  悬赏:80  手机版
解决时间 2021-12-04 08:29
  • 提问者网友:人生佛魔见
  • 2021-12-03 18:07
我要定义一个二维数组,但是二维数组的下标只有第一个下标可以确定,这该怎么办呢?
最佳答案
  • 五星知识达人网友:等灯
  • 2021-12-03 18:23
第一个下标是行数,所以你的二维数组 行数 定了,列数未定。这样只能用指针数组:
#include
main(){
int *a[5]; // 假定5行,所以声明为5个指针
int i,j,m;
printf("input m\n");
scanf("%d",&m); //输入列数
for (i=0;i<5;i++) a[i]=(int *) malloc(sizeof(int)*m); //动态分配
// 这里可以使用 2 维数组 a[5][m] 了。
for (i=0;i<5;i++) for (j=0;jfor (i=0;i<5;i++){
for (j=0;jprintf("\n");
}
return 0;
}追问谢谢你的回答,解决了我的一些疑惑,我想用单片机做一个音乐盒,只定义一个二维数组,包含四首音乐的数据,数组第一个下标指定的是第几首曲子,第二个下标指定的是每首曲子中的乐曲数据,由于每首曲子的数据个数不同,所以第二个下标不能确定,你可以给我些建议吗?万分感谢!还有一个问题,如果定义动态数组的话,那会不会很占单片机内存呢?有四首曲子,89c5系列单片机能不能胜任?追答你可以把文件放在存储设备上,需要播放时再读入play. 读一段播放一段。
全部回答
  • 1楼网友:大漠
  • 2021-12-03 19:32
使用指针数组 int *arr[10]; // 每一个元素代表一行,一共10行
或者使用数组指针 int (*a)[10]; // 每一个元素代表一列,一共10列
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯