计算数组的大小
sizeof(数组名)
获得这个数组占用内存的总长度。二维数组是全部元素占用的总长度。
长度 = sizeof(数组名) / sizeof(数组类型)
元素个数 = 总的占用字节大小 / 每个元素占用的字节大小
64位指针占用8字节,8×8=64,内存寻址。
计算一维数组长度
例子1:
1 | char *sc4[] ={"hello","world","Welcome","C"}; |
输出:
1 | arr total byte = 32 |
例子2:
1 | int n[8] = {1,2,3,4,5}; |
输出:
1 | arr total byte = 32 |
计算二维数组长度
例子1:
1 | char* arr2[2][3]; |
输出:
1 | total byte = 48 |
例子2:
定义一个结构体:
1 | typedef struct People_s { |
1 | People arr3[3][9]; |
输出:
1 | total byte = 432 |
valgrind 检查内存泄漏
valgrind --leak-check=full --track-origin=yes ./test
C的字符串数组
第一种情况,每一个都是指针
1 | char **arr = NULL; |
第二种情况,确定字符串的个数,但每个字符串长度不确定
1 | char *print2[10]; |
第三种情况,字符串的个数和字符串的长度已经确定
1 | char print[2][10] = {"Hello", "World"}; |