C语言中怎么求动态数组大小

摘要:
arr_ len=sizeof(a)/sizeof(int);Sizeof()关键字是对象占用的内存空间的大小,Sizeof(a)是整个数组占用的空间的大小。整数占用的内存空间可以用sizeof(int)计算。接下来是一个指针数组char*str[]={“John”,str_len=sizeof(str)/sizeof(char*);

先来个简单的样例

int a[] = {1,2,3};

int arr_len = 0;

arr_len = sizeof(a)/sizeof(int);


解释:sizeof() keyword是求出对象所占用的内存空间的大小,so, sizeof(a)是算出整个数组占用的空间的大小。

由于是整数数组。一个整数在32位系统上占用4个字节,不同的系统数值可能不同, 用sizeof(int)能够计算出

一个整数占用的内存空间大小。所以用sizeof(a)/sizeof(int)数组中有几个整数,也即算出了数组的大小。


下边来个指针数组

char *str[] = {"John", "Jim"};

int str_len = 0;

str_len = sizeof(str)/sizeof(char*);


指针数组顾名思义数组中存放的都是指针。字符指针。

我们能够用char *p = "I'm a worker.";

指向一个字符串常量,而把这些指针放在一起不就是上边说的指针数组吗。也许我们用

char*     str[]更能显示的看出上边是指针数组。

既然是指针数组那sizeof(str)不就是几个指针占用的空间大小嘛。那除以一个指针所

占用的空间大小不就能够计算出字符指针数组的大小了。


把上边的样例变下

char str[][20] = {"John", "Jim"};

int str_len = 0;

str_len = sizeof(str)/20*sizeof(char);

字符指针数组变成了字符的二维数组。

二维动态数组我们能够看成一个行不固定,列固定(20)的一个表。

我们所要计算的就是有几行。sizeof(str)就是计算出这个表占用的总空间的大小,

总空间的大小除以一行占用的空间大小就能够计算出有几行。那一行占用多大空间呢。我们知道一个单元格中存放的是一个char字符sizeof(char)就能够计算出一个单元格所占用的空间大小。那乘以列数(20)就算出一行占用空间的大小了。

免责声明:文章转载自《C语言中怎么求动态数组大小》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇DBC的故事(二)缓存子系统如何设计下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JDK自带方法实现AES对称加密

请看代码。 1 package jdbc.pro.lin; 2 3 import java.security.InvalidAlgorithmParameterException; 4 import java.security.InvalidKeyException; 5 import java.security.NoS...

typedef 的用法

typedef 的用法   *****以下是参考部分*****   此部分参考自:http://blog.sina.com.cn/u/572f7666010008dm   用途一:   定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:   char* pa, pb;  // 这多数不符合我们的意图,它只声明了一个指向字符变...

Delphi New,Getmem,ReallocMem联系与区别

procedure New(var P: Pointer);   {为一个指针变量分配内存,会自动计算指针所指数据结构需要空的空间大小} procedure GetMem(var P: Pointer; Size: Integer); {分配一个指定大小的内存块(连续),并用P指向它} procedure ReallocMem(var P: Pointer...

Redis实现之压缩列表

压缩列表 压缩列表(ziplist)是列表键和哈希键的底层实现之一,当一个列表键只包含少量列表项,并且每个列表项要嘛是整数值,要嘛是比较短的字符串,那么Redis就会使用压缩列表来做列表键的底层实现。例如,执行以下命令将创建一个压缩列表键的底层实现 127.0.0.1:6379> RPUSH lst 1 3 5 10086 "hello" "worl...

[WorldWind学习]8.Cache对象

MainApplication的构造函数599行实例化了worldWindow的Cache属性。 // set Upper and Lower limits for Cache size control, in bytes long CacheUpperLimit = (long)Settings.CacheSizeMega...

基于jQuery美化联动下拉选择框

今天给大家介绍一款基于jQuery美化联动下拉选择框。这款下下拉选择框js里自带了全国所有城市的数数库。下拉选择框适用浏览器:IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗。效果图如下: 在线预览   源码下载 实现的代码。 html代码: <div id="container">...