sizeof() 的使用

来源:互联网 发布:大数据的三个哲学问题 编辑:程序博客网 时间:2024/06/06 20:56

sizeof()  他是运算符, 而不是函数。不能被表象所迷惑,虽然他有一个括号,但是他确实不是函数。
他可以用于求各种变量,函数等所有可以表示出来的东西的长度。
例如:

       sizeof(fun()); 

       void fun() {}
       这个也是被允许的, 求出来的结果是1 。

写这些主要是加深对sizeof() 的记忆力。在现在的公司招聘中,sizeof() 已经开始占据着一种很重要的位置。
很多公司都乐此不彼的出一些sizeof() 相关的题来考考应聘者。
其中以下是常见的几种示例。这里以代码的形式表现出来:

#include <stdio.h>#include <stdlib.h>#include <string.h>double fun(){printf("hello world...");return 0;}void fun1(char s[]){printf("sizeof(s) = %d\n",sizeof(s));}int main(){printf("\n********************************************************\n");// 出现的概率最高char a[] = "abcdef";char aa[10] = "abcdef";printf("sizeof(a) = %d\tsizeof(aa) = %d\n", sizeof(a), sizeof(aa));printf("strlen(aa) = %d\n", strlen(aa));printf("\n********************************************************\n");// 深入点,必考char *p = a;printf("sizeof(*p) = %d\tsizeof(p) = %d\n", sizeof(*p), sizeof(p));// 对上面进行巩固,int 跟char 是一样的int b[10];printf("%d\n", sizeof(b));printf("\n********************************************************\n");// sizeof 对函数也是通杀printf("sizeof(fun) = %d\n", sizeof(fun));// 1        这个很有意思(还不明了)printf("&fun = %p\n", fun);printf("sizeof(fun()) = %d\n", sizeof(fun()));// 8     这个也很有意思(这个是返回值的长度)printf("\n********************************************************\n");// 指针的时候情况又是怎样呢?char *str1 = "abcde";char str2[10]="abc";char *q = malloc(100);printf("sizeof(q) = %d\n", sizeof(q));printf("sizeof(str1) = %d\n", sizeof(str1));// sizeof 包含'\0'printf("strlen(str1) = %d\n", strlen(str1));// strlen 不包含'\0'printf("sizeof(str2) = %d\n", sizeof(str2));printf("sizeof(\"abc\") = %d\n", sizeof("abc"));printf("\n********************************************************\n");// 调用函数中会将数组转换为指针,故而是4fun1(a);return 0;}








原创粉丝点击