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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM