| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 882 人关注过本帖
标题:這樣是不是就說明我無法使用變長數組?
只看楼主 加入收藏
浩浩捉迷藏
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2014-7-9
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:29 
這樣是不是就說明我無法使用變長數組?
#include <stdio.h>
int main(){
    int aaa(int n,int m,int a[n][m]);
    int z[3][2];
    int i,j;
    for(i=0;i<3;i++)
    {
      for(j=0;j<2;j++)
        scanf("%d",&a[i][j]);
        }
    printf("%d",aaa(3,2,z[3][2]));
    return 0;
}
int aaa(int n,int m,int a[n][m])
{
    int i,j,sum=0;
    for(i=0;i<n;i++)
    {
      for(j=0;j<m;j++)
        sum+=a[n][m];
        }
    return sum;
}

我用了vs6.0/jfe and gcc/Dev-C++都無法成功編譯,求指出錯誤在哪裡?

還是這三個軟件都不支持c99?
搜索更多相关主题的帖子: return include 
2015-03-31 21:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
用gcc的,调整一起语句的顺序试试。

授人以渔,不授人以鱼。
2015-03-31 21:18
浩浩捉迷藏
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2014-7-9
收藏
得分:0 
回复 2楼 TonyDeng
把函數提到main前面了.還是一樣的錯誤.
g++.exe  -x c++ -c C:\Users\PC\Desktop\C\1 -o C:\Users\PC\Desktop\C\1.o  -Wall -fpermissive  -Wno-sign-compare -g
C:\Users\PC\Desktop\C\1:2: error: `n' was not declared in this scope
C:\Users\PC\Desktop\C\1:2: error: `m' was not declared in this scope
C:\Users\PC\Desktop\C\1: In function `int aaa(int, int)':
C:\Users\PC\Desktop\C\1:8: error: `a' undeclared (first use this function)
C:\Users\PC\Desktop\C\1:8: error: (Each undeclared identifier is reported only once for each function it appears in.)
C:\Users\PC\Desktop\C\1: In function `int main()':
C:\Users\PC\Desktop\C\1:13: error: `n' undeclared (first use this function)
C:\Users\PC\Desktop\C\1:13: error: `m' undeclared (first use this function)
C:\Users\PC\Desktop\C\1:19: error: `a' undeclared (first use this function)
C:\Users\PC\Desktop\C\1:13: error: too many arguments to function `int aaa(int, int)'
C:\Users\PC\Desktop\C\1:21: error: at this point in file
Failure

請問你,我變長數組寫錯了嗎?
2015-03-31 21:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:1 
你这个不是变长数组。编译器告诉你,在函数的定义aaa()那一行,变量n、m没有定义,而你在这一行却使用了a[n][m]的写法,那是不允许的,因为在编译这一行的时候,编译器未必知道前面有int n、int m的声明,那是编译器的自由,它不是必定会从左向右解释代码的。

我只能说,不要这样写函数的定义。至于如何使用“变长数组”,我是从不用这东西的,看别人用惯的如何答你吧。

授人以渔,不授人以鱼。
2015-03-31 21:28
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:8 
回复 楼主 浩浩捉迷藏
程序代码:
#include <stdio.h>

int foo(int n, int m, int a[n][m]);

int main(void) {
    int i, j, a[3][2];

    for(i = 0; i < 3; i++) {
        for(j = 0; j < 2; j++)
            scanf("%d", &a[i][j]);
    }

    printf("%d\n", foo(3, 2, a));
    return 0;
}

int foo(int n, int m, int a[n][m]) {
    int i, j, sum = 0;

    for(i = 0; i < n; i++) {
        for(j = 0; j < m; j++)
            sum += a[i][j];
    }

    return sum;
}

Only the Code Tells the Truth             K.I.S.S
2015-03-31 21:31
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
回复 楼主 浩浩捉迷藏
先前回复的代码真的不是变长数组
变长数组需要支持c99编译器
代码可以这样写

程序代码:
#include <stdio.h>

int foo(int n, int m, int a[n][m]);

int main(void) {
    int i, j, n, m;
    scanf("%d%d", &n, &m);
    int a[n][m];

    for(i = 0; i < n; i++) {
        for(j = 0; j < m; j++)
            scanf("%d", &a[i][j]);
    }

    printf("%d\n", foo(n, m, a));
    return 0;
}

int foo(int n, int m, int a[n][m]) {
    int i, j, sum = 0;

    for(i = 0; i < n; i++) {
        for(j = 0; j < m; j++)
            sum += a[i][j];
    }

    return sum;
}

图片附件: 游客没有浏览图片的权限,请 登录注册

Only the Code Tells the Truth             K.I.S.S
2015-03-31 21:36
浩浩捉迷藏
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2014-7-9
收藏
得分:0 
回复 6楼 longwu9t
謝謝,我複製了你第二次貼給我的代碼,還是無法編譯成功,那就是確實我三個編譯器都不支持c99了!
2015-03-31 21:43
浩浩捉迷藏
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2014-7-9
收藏
得分:0 
回复 4楼 TonyDeng
嗯,感謝回答!
2015-03-31 21:44
浩浩捉迷藏
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2014-7-9
收藏
得分:0 
回复 6楼 longwu9t
再請問一下,你用的什麼編譯器呢?可以給我名字嗎?我去載一個來用.
2015-03-31 21:45
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
回复 9楼 浩浩捉迷藏
gcc -Wall -g -std=gnu99 main.c -o main.exe

图片附件: 游客没有浏览图片的权限,请 登录注册

Only the Code Tells the Truth             K.I.S.S
2015-03-31 21:48
快速回复:這樣是不是就說明我無法使用變長數組?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019244 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved