| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2465 人关注过本帖
标题:C语言中定义变量的数据类型有位置要求吗,请大家帮忙看一下这个错误
只看楼主 加入收藏
小涓儿
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-3-31
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:10 
C语言中定义变量的数据类型有位置要求吗,请大家帮忙看一下这个错误
我在编写一个算法程序的时候,刚开始就遇到了错误,希望大家能帮忙解决一下
这是我的程序:
#include"stdio.h"
#include"math.h"
void main()
{
    int a,b,p,i,j,m;
    printf("please input a,b and p:\n");
    scanf("%d%d%d",&a,&b,&p);
    m=(int)sqrt(p-1);
    //printf("%d\n",m);
    int L1[m],L2[m];//错误在这里,提示是:error C2143: syntax error : missing ';' before 'type'
    for(j=0;j<m;j++)
    {
        L1[j]=((int)pow(a,m*j))%p;
        printf("%d\t",L1[j]);
    }
}
当我把数组L1和L2的定义放在main开始的地方的时候,编译又能够通过。可是那样的话就不能根据m的大小来确定这两个数组的元素了啊。
搜索更多相关主题的帖子: 变量 C语言 数据 定义 类型 
2009-11-07 10:29
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:5 
定义变量要在程序开始,不能程序执行到一半了又定义变量。

    int a,b,p,i,j,m;
    int L1[m],L2[m];
    printf("please input a,b and p:\n");
    scanf("%d%d%d",&a,&b,&p);
    m=(int)sqrt(p-1);
    //printf("%d\n",m);
   
2009-11-07 10:33
小涓儿
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-3-31
收藏
得分:0 
回复 2楼 m456m654
可是m 的值是后面才算出来的啊,这怎么办呢?
2009-11-07 10:44
hsm8592
Rank: 2
等 级:论坛游民
帖 子:55
专家分:57
注 册:2009-11-6
收藏
得分:0 
我也是刚刚学C,刚在网上查了点质料,也许对你有用。


数组的大小可以在程序运行时定义吗?   
          不。在数组的定义中,数组的大小必须是编译时可知的,不能是在程序运行时才可知的。例如,假设i是一个变量,你就不能用i去定义一个数组的大小:   
          char       array[i];         /*(notvalidc   */   
          有些语言支持这种定义,但C语言不支持。如果C语言支持这种定义,栈就会变得更复杂,调用函数的开销就会更大,而程序的运行速度就会明显变慢。   
          如果数组的大小在编译时是可知的,即使它是一个非常复杂的表达式,只要它在编译时能被计算出来,你就可以定义它。   
          如果你要使用一个在程序运行时才知道其大小的数组,你可以说明一个指针,并且调用malloc()或calloc()函数从堆中为这个数组分配内存空间。
2009-11-07 10:46
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:5 
在程序中不是说你要用到某个值才去定义它,而是不论你在什么位置使用它,都要在程序开头定义。
2009-11-07 10:46
hsm8592
Rank: 2
等 级:论坛游民
帖 子:55
专家分:57
注 册:2009-11-6
收藏
得分:0 
不知道用宏定义可以不?
2009-11-07 10:48
小涓儿
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-3-31
收藏
得分:0 
哦,我懂了,谢谢大家。
2009-11-07 10:49
小涓儿
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-3-31
收藏
得分:0 
主要是我之前一直以为在编程的时候可以随时定义数据,原来是基础东西没弄明白啊。
2009-11-07 10:53
雪鹰独行
Rank: 2
等 级:论坛游民
帖 子:40
专家分:10
注 册:2009-7-18
收藏
得分:0 
数组后边正括号中的值不能是变量,即不能定义动态数组,你这个想法很好,,但是c语言不承认
2009-11-07 10:59
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
以下是引用hsm8592在2009-11-7 10:46:24的发言:

我也是刚刚学C,刚在网上查了点质料,也许对你有用。


数组的大小可以在程序运行时定义吗?   
          不。在数组的定义中,数组的大小必须是编译时可知的,不能是在程序运行时才可知的。例如,假设i是一个变量,你 ...

不好意思,这已经是历史了。

其实动态分配栈内存不麻烦,只是和经典C的概念不和而已,因此新的C99标准已经允许这种行为了。

专心编程………
飞燕算法初级群:3996098
我的Blog
2009-11-07 11:37
快速回复:C语言中定义变量的数据类型有位置要求吗,请大家帮忙看一下这个错误
数据加载中...
 
   



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

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