#include
int =5;
struct data
{
int f[n];
int mid;
int h;
}x.y;
哪里不对
编译器说expected constant experssion
数组的长度必须是常量!不能是变量,不管是全局的还是局部的都不行。要用符号来表示数组的长度,请用宏定义#define 。比如:
#include
#define N 5
struct data
{
int f[N];
int mid;
int h;
}x,y;
如果要动态声明数组,则要用到malloc函数动态分配空间。比如:
#include<stdlib.h>
#include<stdio.h>
int main()
{
int *A;//指向数组首地址的指针
int n;//数组的长度
scanf("%d", &n);//输入数组的长度
A = (int*)malloc(n*sizeof(int));//动态生成一个n个元素的数组A[n]
for (int i = 0;i < n;i++)
{
A[i] = i;//初始化数组
}
}
不是所有的编译器都支持 int f[n];
但是gcc新版本的确可以这么写,不能说这么写就是错的。
所以你可能看见有的书上或者网站上这么写,而你的编译器不支持而已。