C语言如何定义一个N行N列的二维数组任意输入数据

在不知道N是几的情况下如何定义数组,如果随便定义一个inta[10000][10000]是不是浪费了空间,,求高手解惑... 在不知道N是几的情况下如何定义数组,如果随便定义一个int a[10000][10000]是不是浪费了空间,,求高手解惑 展开
 我来答
百度网友946420d
2017-07-13 · TA获得超过151个赞
知道小有建树答主
回答量:147
采纳率:0%
帮助的人:32.2万
展开全部
我可以肯定的告诉你,不可能在程序运行的时候决定一个二维数组的大小,因为数组的大小是
在编译时就决定了的,不是在运行时,如果是一维的通过某些方法还可以办到,二维的就不可
能了,拿一维的来说:
polly@nowthen:~$ cat test.c
#include <stdio.h>
#include <stdlib.h>

struct test {
    int num;
    int arr[0];
};

int main()
{
    struct test *temp;
    int n = 0;
    scanf("%d", &n);
    if(n > 0) {
        temp = (struct test*)malloc(sizeof(struct test)+n*sizeof(int));
        temp->num = n;
        int i = 0;
        for(; i<temp->num; i++) {
            temp->arr[i] = i;
        }
        
        for(i=0; i<temp->num; i++) {
            printf("element %d = %d\n", i, temp->arr[i]);
        }
    }

    return 0;
}
polly@nowthen:~$ gcc -Wall test.c -o liu <---编译
polly@nowthen:~$ ./liu  <---运行
9  <---输入数组维数
element 0 = 0
element 1 = 1
element 2 = 2
element 3 = 3
element 4 = 4
element 5 = 5
element 6 = 6
element 7 = 7
element 8 = 8
polly@nowthen:~$ 
就上面的C语言标准也是不支持的,多维数组的办不到,一维的也尽量少用。
匿名用户
2013-07-25
展开全部
对,数组下标是一个确定的值。但最好用define 定义数组下标,因为这样修改数组长度很方便
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-25
展开全部
用malloc函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-25
展开全部
1、一般情况下,题目会给出N不大于M,m不大于几的限制条件,此时只需这样定义即可 int a[N]M],其中N和M作为常数进行宏定义,比如#define N 5#define M 6 2、学到动态内存分配后,就不会有这样的担忧,需要时,可用malloc()函数在“堆”空间申请内存,该函数的原型是: void *malloc( size_t size );,功能是要求系统分配大小为size个字节的堆空间,注意到该函数的分会类型是void,通过强制类型转换即可获得需要的数据类型,比如int *p;p = (int *)malloc(30);如果申请成功,则返回该区域的首址,失败则返回NULL。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式