zoukankan      html  css  js  c++  java
  • C语言中怎么求动态数组大小

    先来个简单的样例

    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)就算出一行占用空间的大小了。

  • 相关阅读:
    意料之外,情理之中,Spring.NET 3.0 版本发布-
    学习究竟是为了什么?
    测量软件应用系统的聚合复杂度【翻译稿】
    关键字New,如阴魂不散
    选择IT事业,意味着终身学习
    华为机试001:字符串最后一个单词的长度(华为OJ001)
    C++版
    C++版
    C++版-剑指offer 面试题6:重建二叉树(Leetcode105. Construct Binary Tree from Preorder and Inorder Traversal) 解题报告
    C++版
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5326541.html
Copyright © 2011-2022 走看看