815116820 发表于 2014-5-12 20:55:32

为什么 int i; i = 10; int max[i];会报错?

本帖最后由 815116820 于 2014-5-12 20:58 编辑

#include<stdio.h>

main ()
{
   int i;
   i=10;
int max;

}

仰望天上的光 发表于 2014-5-12 20:55:33

C语言规定在{}里必须先定义所有的变量,再使用变量。你在i = 10;使用了变量后企图再定义数组所以报错应该写:
int main( void ) {
int i;
int max;
i = 10;
}

815116820 发表于 2014-5-12 20:59:03


int max;
打不上去!见谅

815116820 发表于 2014-5-12 21:20:21

本帖最后由 815116820 于 2014-5-12 21:33 编辑

仰望天上的光 发表于 2014-5-12 21:10 static/image/common/back.gif
C语言规定在{}里必须先定义所有的变量,再使用变量。你在i = 10;使用了变量后企图再定义数组所以报错应该写 ...
谢谢!但是我定义之后是想调用内部max里面的i,有什么办法呢也就是说我int max之后max内部的i能不能大于10呢?

仰望天上的光 发表于 2014-5-12 22:15:39

815116820 发表于 2014-5-12 21:20 static/image/common/back.gif
谢谢!但是我定义之后是想调用内部max里面的i,有什么办法呢也就是说我int max之后max内部的i能不能大 ...

以通常的收发是不能的,因为定义数组的术后要为数组分配空间,而这个空间必须固定大小

815116820 发表于 2014-5-12 22:58:42

仰望天上的光 发表于 2014-5-12 22:15 static/image/common/back.gif
以通常的收发是不能的,因为定义数组的术后要为数组分配空间,而这个空间必须固定大小

知道了!谢谢
我只是想做出这个函数!找出数组中的最大值
int max(int m,int array[])
{
      int f,k;
      f = k = 0;
   
            
                  while(f <= m){
                        while (array >= array){
                              if(k < m)
                              ++k;
                              else return array;
                                                }
                        ++f;
                        k = 0;
}
                                             }
我错误理解了:实参在函数定义内形参存在的必要性!
其实实参会直接赋值给形参,所以我对于数组宽度的忧虑是完全不存在的

kikiatw 发表于 2014-5-12 23:04:14

如果你創造一個可變長度的陣列(數組), 可以用
#define i 10
建議你找尋魚c論壇上有一篇內存的五大區這篇來看看, 看得懂這篇你指標陣列應該很容易就通了.

oggplay 发表于 2014-5-12 23:15:52

换编译器就好了,换个支持C99标准的,VC 全系列不完全支持C99标准

Yun_C 发表于 2014-5-13 09:18:31

int *max = (int *)malloc(sizeof(int) * i);
或者.cpp
页: [1]
查看完整版本: 为什么 int i; i = 10; int max[i];会报错?