Dev c++ 数组

来源:百度知道 编辑:UC知道 时间:2024/05/31 20:40:10
#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++标准里这样定义数组是不是不行?

C99标准支持变长数组(也就是可以用变量来定义数组大小)

#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],并且第一时间进行初始化。

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

原则上来说,数组的长度必须要是常量,你这样定义就是错的,估计VC不能过,我没用过
但是可以用动态开数组
不过DEV的工程师是参与了C++语法修订工作的,在目前来说是比较权威的,毕竟了解自己的编译器也是一项技术嘛,呵呵,我们老师曾经这样说的,我们参加比赛也都是用dev

LZ应该是对变量的作用域不太清楚
#inc