现在的位置: 首页 > 综合 > 正文

sizeof()深入理解

2013年02月04日 ⁄ 综合 ⁄ 共 867字 ⁄ 字号 评论关闭

最近一直有准备面试,对于基础知识的掌握程度还真的得好好补一下。sizeof(type)是经常遇到的一类笔试题,为了能以不变应万变,还是将sizeof的原理搞清楚最省事。

如下原则须谨记:
1.  sizeof()不是函数,而是一个操作数,即关键词(相信这一点大部分人都很诧异);
2.  sizeof() 返回结构体、数组、变量的实际大小,但是对于指针,只能返回指针所占用的内存的大小,不能返回指针所指向的内存的大小,即不能返回动态分配的内存空间的尺寸;  

练习题,巩固所学:

 1 #include <stdlib.h>
2 #include <stdio.h>
3
4 char* string = "Hello";
5 int var = 100;
6 int* pint = NULL;
7 int** ppint = NULL;
8 int array[100];
9
10 int array_func(char para[100])
11 {
12 return sizeof(para);
13 }
14
15 int malloc_func(void)
16 {
17 int* p = NULL;
18 return sizeof(p = malloc(100));
19 }
20
21 int main(int argc,char* argv[])
22 {
23 char para[100];
24
25 printf("string size:%d\n",sizeof(string));
26 printf("var size:%d\n",sizeof(var));
27 printf("pint size:%d\n",sizeof(pint));
28 printf("ppint size:%d\n",sizeof(ppint));
29 printf("array size:%d\n",sizeof(array));
30
31 printf("array func size:%d\n",array_func(para));
32 printf("malloc func size:%d\n",malloc_func());
33
34 return 1;
35 }

运行结果是什么呢?认真想一想再回答:>

 

 

抱歉!评论已关闭.