关于define N中N如何通过运行输入赋值?

来源:百度知道 编辑:UC知道 时间:2024/05/22 05:55:09
│ Line 5 Col 16 Insert Indent T
│#include<stdio.h>
│#define N
│main()
│{
│ int a[N];
│ int i;
│ scanf("%d",&N);
│ for(i=0;i<N;i++)
│ a[i]=i;
│ for(i=0;i<N;i++)
│ printf("%d",a[i]);
│}
N值赋值错误,那么到底哪里错了?该怎么赋值呢

不能这样 你是不是想生成一个动态数组 这样不行的 我以前就试过
想要的话 看看calloc函数和malloc函数

#define N 出错了。
因为#define是宏定义,一般形式是:#define 宏名 宏体
宏名就是你自己选择的符号常量(就是题中的N),宏体是一个数。就是你想让N代表几。
所以你的宏定义缺少宏体,应改为 #define N 5(假设你想让符号常量N表示5)

宏定义不能在运行阶段改变(它在编译之前就已经确定了,此后就无法更改)

在程序的运行过程动态决定数组的长度可以这么做:

//---------------------------------------------------------------------------

#include<stdio.h>
#include <stdlib.h>
main()
{
int *a;
int i,N;
scanf("%d",&N);
a=malloc(sizeof(int)*N);/*动态创建一个长度为N的int类型数组*/
for(i=0;i<N;i++)
a[i]=i;
for(i=0;i<N;i++)
printf("%d",a[i]);
free(a); /*释放为a分配的数组空间*/
}

//---------------------------------------------------------------------------

#define宏定义 类似文本替换