数组定义行列数时是不能用变量的。可是现在我想设计这样一个程序:可以随意的输入内容形成一个不确定行列数的字符数组,以一个类似表格的形式输出。
这个程序必须具有以下功能:程序开始的时候要先输入第一行每个“单元格”内的内容,当然,这些单元格的内容是不确定的,你可以随时终止;第一列也是这样;这样行列数就确定了,然后你需要逐行输入每个“单元格”的内容来完成这个表格。
我不会的地方就是定义数组时不能用变量的问题,给出事例形式的解决方案即可。当然,若你给出了完整的C程序,可以加分,根据程序的完整性、正确性,我可以多给20-50分。
你应该挺厉害的,奈何我的C语言刚入门,有很多不会的地方,你能帮我详细地解释解释这两句吗:
a=(int**)malloc(m*sizeof(int*));
a[i]=(int*)malloc(n*sizeof(int));
我不懂它们的含义和作用。亲让我茅塞顿开的话,再给你50分呦~
我学C语言也才刚一年而已哦
先看这句:a=(int**)malloc(m*sizeof(int*));
malloc表示开辟内存空间,这个内存空间有多大呢?m*sizeof(int*)就表示了所开辟的内存空间的大小。也就是开辟了m个大小为sizeof(int*)的空间分别用放m行的行地址。然后把这m个空间首地址赋给a。(打个比方,就是建造了m个房子,用来存放m行第一个数的地址)
再看这句:
a[i]=(int*)malloc(n*sizeof(int));
表示开辟大小为n*sizeof(int)的内存空间用于存放每一行的n个数。然后把这n个空间首地址赋给a[i].
(也就是将刚才建造的m个房子拓展成m个楼层,每个楼层有n个房子)
这样一座大楼就建成了,m和n由你任意输入。 m x n 个元素就这样被存放在m个楼层,n个房子里面) 接下来你就可以把a当作二维数组a[m][n]来用了。。
清楚了吗?
你说得很对的样子,可是为什么调试时不对啊,它会显示“Debug Error”,“Invalid allocation size: 4294967295 bytes”。按步调试时会在:a[i]=(int*)malloc(n*sizeof(int)); 这里出现相同错误。
还有,我前面问你的那两句好像有些问题,应该是星号上错了吧,你可以看下吗?麻烦你了
把你的源程序告诉我吧,我帮你修改一下
追问你有QQ,或是其他的联系方式吗?这里不行的,超出最大字数了
追答QQ:892888995