C语言中如何计算一个数组占存储空间多少空间?

已举报 回答 关注
C语言中如何计算一个数组占存储空间多少空间?
问在线客服
扫码问在线客服
  • 回答数

    6

  • 浏览数

    10,033

6个回答 默认排序
  • 默认排序
  • 按时间排序

已采纳
C语言中有一个专门用于检测类型或变量或数组在内存中所占有的空间(字节数)的操作符sizeof,用它可以直接检测出数组在内存占有的字节数。语法规则是:sizeof(x);(识别没有歧义时也可写成sizeof x;)——其中x是类型名、变量名或数组名等,返回x所占字节数(int型)。以下代码可以帮助理解:
#include "stdio.h"struct X{ int d; float t; double b; char n[100];};int main(int argc,char *argv[]){ int a[]={1,2,3,4,5,6,7,8,9,10}; double y=3.1415926; struct X t[3]={{0,0.0f,0.0,""},};//结构体数组属复杂类型 printf("10 elements of int array needs %d bytes.\n",sizeof a);//检测整型数组 printf("Double variables of type need %d bytes.\n",sizeof(y));//double类型变量 printf("Type float need %d bytes.\n",sizeof(float));//float类型 printf("Structure array 't[3]' need %d bytes.\n",sizeof t);//检测复杂类型 return 0;}运行结果如下:

取消 评论
1、可以预先定义足够大的数组(浪费在所难免),然后将键盘输入的整数存入数组,并累计数据个数。
...................................................................
int i,n = 0,a[1024]
while(1) {
printf("输入整数(q: 结束输入过程)%d : ", n + 1);
if(scanf("",&a[n]) != 1) break;
++n;
}
for(i = 0; i < n; ++i) printf("%d ",a[i]);
printf("\n");
.............................................................
2、动态申请空间
.................................................................
#include <stdlib.h>
int i,n,*a;
printf("数据个数 : ");
scanf("%d",&n);
a = (int *)malloc(n * sizeof(int));
for(ii = 0; i < n; ++i) {
printf("数%d = ",i + 1);
scanf("%d",&a[i]);
}
for(i = 0; i < n; ++i) printf("%d ",a[i]);
printf("\n");
.........................................................
delete a; // 程序结束前要释放动态内存
取消 评论
不管是整型数组,还是字符型或浮点型数据,而且没有初始化的话,定义的数据会获得系统给改数据分配的地址上原有的数据。如果输出,会显示一些稀奇古怪的数据。
如果初始化了,当然就没问题了。
你可以自己试试。
取消 评论
要看数组元素的类型,不同类型数据所占的存储空间是不同的。
计算方法是用你所定义的类型所占的字节数*数组长度
取消 评论

IsL

你要把n个整数依次存入数组,有多种方法,如果一个一个输入,循环的终止条件必定要设立一个标志位的,就像你输入一个字符串要有\0结尾一样,一个程序的确定性是程序运行的前提,计算机只能认识你输入的东西,你要告诉它你结束了,就要让它从你的输入中找到记号。
取消 评论
if (c >='A' && c <= 'Z')
那么就可以判断字符c是一个大写字母了
取消 评论
ZOL问答 > C语言中如何计算一个数组占存储空间多少空间?

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

扫码参与新品0元试用
晒单、顶楼豪礼等你拿

扫一扫,关注我们
提示

确定要取消此次报名,退出该活动?