代码:
// SizeofTest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h" #include "memory.h" #include "stdlib.h" #include "string.h" typedef struct{ int x; int data[100]; double *pData; }TestSTR,*pTestSTR; int main(int argc, char* argv[]) { int a=12; printf("\nint a=12;sizeof(a)=%d\n",sizeof(a)); int b[10]={0}; printf("\nint b[10]={0};sizeof(b)=%d\n",sizeof(b)); double *p; printf("\ndouble *p;sizeof(p)=%d\n",sizeof(p)); p=new double[200]; printf("\ndouble *p;p=new double[200];sizeof(p)=%d,sizeof(*p)=%d\n",sizeof(p),sizeof(*p)); TestSTR varSTR; printf("\nstruct sizeof(TestSTR)=%d\n",sizeof(TestSTR)); printf("\nTestSTR varSTR; sizeof(varSTR)=%d\n",sizeof(varSTR)); varSTR.pData=new double[200]; printf("\nTestSTR varSTR; sizeof(varSTR)=%d\n",sizeof(varSTR)); printf("\nstruct point sizeof(pTestSTR)=%d\n",sizeof(pTestSTR)); pTestSTR var_pTestSTR; var_pTestSTR=&varSTR; printf("\npTestSTR var_pTestSTR; sizeof(var_pTestSTR)=%d\n",sizeof(var_pTestSTR)); printf("\npTestSTR var_pTestSTR; sizeof(*var_pTestSTR)=%d\n",sizeof(*var_pTestSTR)); memset(varSTR.pData,0,200*sizeof(double)); printf("\nTestSTR varSTR; sizeof(varSTR)=%d\n",sizeof(varSTR)); printf("-----------------------------------------------------\n"); char str[15]="nuptboyzhb"; char *pChar; pChar=str; printf("\nstrlen(str)=%d,sizeof(str)=%d\n",strlen(str),sizeof(str)); printf("\nstrlen(pChar)=%d,sizeof(pChar)=%d\n",strlen(pChar),sizeof(pChar)); return 0; }
int a=12;sizeof(a)=4
int b[10]={0};sizeof(b)=40
double *p;sizeof(p)=4
double *p;p=new double[200];sizeof(p)=4,sizeof(*p)=8
struct sizeof(TestSTR)=408
TestSTR varSTR; sizeof(varSTR)=408
TestSTR varSTR; sizeof(varSTR)=408
struct point sizeof(pTestSTR)=4
pTestSTR var_pTestSTR; sizeof(var_pTestSTR)=4
pTestSTR var_pTestSTR; sizeof(*var_pTestSTR)=408
TestSTR varSTR; sizeof(varSTR)=408
-----------------------------------------------------
strlen(str)=10,sizeof(str)=15
strlen(pChar)=10,sizeof(pChar)=4
Press any key to continue