Dev c++ 数组

#include <stdio.h>
#include <conio.h>

int bb(int a);

int main()
{
int a = 10;
int b[a];

b[8] = 123;

bb(100);

printf("%d", b[8]);
getch();
}

int bb(int a)
{
int c[a];
c[a - 1] = 456;
printf("\n%d\n", c[a - 1]);
}

这样的数组定义居然可以运行
谁能解释一下,谢谢
c++标准里这样定义数组是不是不行?

b[],确实是可以用变量a来申请空间,可这不是一个规范的格式,但是一旦这个a很大的时候,就会报错,得要用动态申请
貌似c[]和b[]差不多,不明白你写出来做什么

原则上来说,数组的长度必须要是常量,你这样定义就是错的,估计VC不能过,我没用过
但是可以用动态开数组
不过DEV的工程师是参与了C++语法修订工作的,在目前来说是比较权威的,毕竟了解自己的编译器也是一项技术嘛,呵呵,我们老师曾经这样说的,我们参加比赛也都是用dev
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-08-03
LZ应该是对变量的作用域不太清楚
#include <stdio.h>
#include <conio.h>

int bb(int a);

int main()
{
int a = 10; int b[a];(这个的确是不行的)

b[8] = 123;

bb(100); (c出了这个函数后,返回原函数体,变量a又成了上面的a了)

printf("%d", b[8]);
getch();
}

int bb(int a)(上面的函数体中定义的a变量被这里定义的a变量覆盖了,两个变量是不同的,上面的int bb(8)相当于int bb(int a=8)).
{
int c[a];
c[a - 1] = 456;
printf("\n%d\n", c[a - 1]);
}
第2个回答  2009-08-03
#include <stdio.h>

#include <conio.h>

int bb(int a);

int main()
{
int a = 10;
int b[a];

b[8] = 123;//你没对其他的元素处理 ,只是给b[8]赋值,赋值当然没问题。你给没赋值的输出试试。

bb(100);

printf("%d", b[8]);//你试着输出b[9]
getch();
}

int bb(int a)//这里的a只是形参,跟主函数的a不是一个值。楼主不要理解错了
{
int c[a];
c[a - 1] = 456;//这个a=100.你这意思是给c[99]赋值。你试着输出其他元素
printf("\n%d\n", c[a - 1]);
}

唉。楼主又砖牛角了。神也。
数组一般要有明显的界限也就是大小,还要进行初始化。要不容易出现隐性错误。包括越界。包括元素没有值,电脑则随机安一个给他啊。甚至在有的时候会出现不能编译的问题。

所以一般要#define SIZE 10
a[SIZE],并且第一时间进行初始化。
第3个回答  2009-08-03
C99标准支持变长数组(也就是可以用变量来定义数组大小)本回答被提问者采纳
第4个回答  2009-08-03
dev c++用的是GCC编译器,和MinGW是一样的,GCC编译器下改段程序是符合标准的。VC6下则通不过。

Dev c++ 数组
貌似c[]和b[]差不多,不明白你写出来做什么 原则上来说,数组的长度必须要是常量,你这样定义就是错的,估计VC不能过,我没用过 但是可以用动态开数组 不过DEV的工程师是参与了C++语法修订工作的,在目前来说是比较权威的,毕竟了解自己的编译器也是一项技术嘛,呵呵,我们老师曾经这样说的,我们参...

数组在DEV C++处怎么会可以这样定义?
dev c++采用的是g++编译器。g++有一个极其强大的功能就是可以用变量声明数组大小。

dev c++的数组问题!
a[100]指向的是a之后100个位置的地方。如果这个地方,属于程序的寻址空间,运行时就不会发生错误,如果超出,应该会发生地址非法访问的错误。另外,如果有其他操作修改或者访问了a[100]这个地方的内容,会发生不可预知的问题,因为你错误\/意外的修改了这个地方的内容。

Dev-C++的一个小问题,有关数组的
int main(){ int n,i,j;int a[10]={1,2,3,4,5,6,7,8,9,10};scanf("%d",&j);\/\/前面没有j=?scanf的返回值是正确输入的个数,所以如果你要加上j=,输入正确情况下,j=1 printf("%d",a[j]);getchar();getchar();return 0;} ...

用dev c++编写c语言程序定义一个100000的结构体数组总是数据溢出_百度...
那是必然的,因为C++每个函数的栈空间一般只有2MB。用动态分配。

dev c++输出二维数组时全部输出成了一行?
你的程序我帮你改好了,是换行符的位置不对 完整的程序如下(改动的地方见注释)include<stdio.h> int main(){ int a[3][4]={{6},{8},{3}};int i,j;for(i=0;i<=2;i++){ for(j=0;j<=3;j++){ printf("%5d",a[i][j]);\/\/这里去掉换行符 } printf("\\n");\/\/这里加...

Dev c++这种情况是什么原因??
1.确认数组定义的大小是否足够;2.使用宽字符集定义数组,同时修改输入输出的格式控制

关于c++中创建数组
书上的意思是你建立一个数组后要对其进行初始化!!!我也是dev 在dev里。因为你在主函数里没有对其进行处理。如果有的话,就会报错了。不能对空数组进行处理。这样定义为什么能通过呢?因为你没有对其数据处理。所以他只是空在那里,所以才没有问题。直接结束。因为你直接对a赋值了,所以相当于一个常...

用devc++时,提取一个txt中的数据赋值给一个数组,为什么2000个数据只...
1.如果你是用fread之类的函数读取的话,你定义的是不是char数组,如果不是的话很可能读取字符时系统会把几个字符放到一个中,这样看着好像就变少了。2.如果你的数组定义没有问题,你是怎么统计提取到的数据数量的?如果你采用测量字符长度的方法的话,当提取到的数据中有空格或回车时就停止计数了。3...

求助:C++对象数组初始化问题 (Dev C++不通过,VC6.0却过了)
我手边没有devc++,不敢说给出的答案一定正确 我的建议是,拷贝构造函数的参数写成const test & 试试看 (如果可以的话,请你以后也遵守这个写法,这是拷贝构造函数的规范)

相似回答
大家正在搜