c需要定义数组,c定义数组长度可变

http://www.itjxue.com  2023-01-05 10:46  来源:未知  点击次数: 

C语言数组定义

int n=4;这一句实践定义了n为int型变量,给它赋值4后当然i还是变量,因为i是可以变的量,而数组要求开辟一个指定的空间,所以括号中为了与之对应就不能用变量,只能是常量,比如int a[5];或在程序前已定义了宏#define n=5;

在写成a[n]就可以了,因为这时的n已经代表一个常量了,而不是像int i=4中的i(还是个变量,因为你以后可以改变它的值)

C语言编程中数组的定义

这种题目一般不希望设计内存管理。所以一般都是进可能给一个比较大的数组。

例如

a[10];

表示位数不会超过十,你输入的时候需要个索引记录a[]数组有效的位数。

使用的时候,只使用有效位数。

肯定会有一段内存不用的。或多或少。这就是数组存储动态数据特点。

如果内存管理的话,你设计个增量比如5.

一旦索引告诉你10个位置用完了,地方不够,你在动态申请

15个位置,把原来的复制到新的内存空间。

这就是数组内存管理的方法,但是一般程序不要求这样,因为你要作的是实现算法思想,而不是去想这些内存管理的方面。

所以现在大多不需要程序员考虑内存管理。对实现算法而讲,注重的是实现的思想。

a[10]不行,你就设置你认为足够长的。比如a[100]

通常这种情况,你要考虑你输入的最大数字对应的位数,这种题目肯定是有上限的,不是任何数都可以。

我刚看你的程序了,10进制变16进制程序有误,你没有考虑余数10,11...

10对应A,11对应B..

这样的话,应该用char[]数组存储。

下面是程序

你输入15,会输出F

100,会输出64

#include stdio.h

#include math.h

void main()

{

int num;

printf("请输入一个十进制整数:");

scanf("%d",num);

char a[100]; //这里的数组长度应当依据什么来定义

int i=0;

int yushu;

while(num0)

{

yushu=num%16;

if(yushu10)

a[i]=yushu+'0';

else

a[i]='A'+(yushu-10);

num=num/16;

i++;

}

i--;

printf("转化为十六进制的数为:");

for(;i=0;i--)

{

printf("%c",a[i]);

}

printf("\n");

}

C语言中定义数组

这个一般都是这样处理的

定义一个 字符串数组 char a[20]

那么用memset(a,0,sizeof(a));

将a 数组每个字符都置为 '\0'

注意 '\0'不是空格 而是结束符号'\0'

因为字符串都是以'\0'结束的 这个你搞不懂的话 赶紧回去翻书 这个概念十分重要

如果是其他数组 最好定义一个变量n

比如int a[20] 那么n=10

以后操作数组的时候

for(i=0;in;i++)

那么 实际上操作的就是前10个元素

后面根本不管多少个元素了 也不用初始化他们的值

如果想操作11个元素 只需要把n 改为11即可

问题:为什么不直接把数组定义为int a[n]呢?

是因为c语言 不允许变量做数组声明的长度 这样做是错误的

(责任编辑:IT教学网)

更多