#include<stdio.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
printf("%d %d\n", (int)sizeof(double), (int)sizeof(int));
//一维数组n,占用空间 4*4 = 16字节
int n[4];
// (*b)表示一维数组,占用空间 4*4 = 16
int(*b)[4];
// o表示存放指针的一维数组,占用空间 8*4 = 32
int *o[4];
// --------
double *(*a)[4][5];
// p表示存放指针的二维数组,每个元素内存放的是指针,一共 8*4*2 = 64 字节
double *p[4][2];
// q表示存放数据的二维数组,每个元素内存放double类型数据,一共 8*4*2 = 64 字节
double q[4][2];
//当前系统下指针 a 的大小,与CPU地址的位数有关
// 64位对应指针大小8字节,32位对应指针大小为4字节
printf("a=%d\n", (int)sizeof(a));
//含有二维指针的数组 (*a) 对应每个元素存储的都是指针,那么数组总大小 8*5*4=160
printf("*a=%d\n", (int)sizeof(*a));
//含有一维指针的数组 (*a)[4] 对应每个元素存储的时长度[5]的一维数组,那么数组总大小 8*5=40
printf("**a=%d\n", (int)sizeof(**a));
//含有一般double数据的数组 每个元素占指针大小的空间 8
printf("***a=%d\n", (int)sizeof(***a));
//一个指针,指向 double 的数组的首地址 8
printf("****a=%d\n", (int)sizeof(****a));
return 0;
}
sizeof求指针数组所占空间大小
于 2018-09-27 21:47:34 首次发布