我发现这个面试问题难住了蛮多人的。总的来说,sizeof(x)返回的是该值x占用的存储空间的大小。但是,问题就出在这个"x"到底是啥?

#include

#include

#define HELLO_STR "hello"

#define HELLO_STR2 "hello\0"

int hello(int input[3][3])

{

printf("the sizeof(input) is: %d\n",sizeof(input));

}

int main(int argc, char *argv[])

{

int i = 0;

int j[10];

char x[3][3];

printf("the sizeof(1) is: %d\n",sizeof(1));

printf("the sizeof(i) is: %d\n",sizeof(i));

printf("the sizeof(&i) is: %d\n",sizeof(&i));

printf("the sizeof(j) is: %d\n",sizeof(j));

printf("the sizeof(&j) is: %d\n",sizeof(&j));

printf("the sizeof(HELLO_STR) is: %d\n",sizeof(HELLO_STR));

printf("the sizeof(HELLO_STR2) is: %d\n",sizeof(HELLO_STR2));

printf("the strlen(HELLO_STR2) is: %d\n",strlen(HELLO_STR2));

printf("the strlen(HELLO_STR2) is: %d\n",strlen(HELLO_STR2));

printf("the sizeof(x) is: %d\n",sizeof(x));

hello(j);

return 0;

}

以下面的代码为例,有多少人能正确写出所有的结果呢?

在我的mac上,输出的结果是这样的

the sizeof(1) is: 4the sizeof(i) is: 4the sizeof(&i) is: 8the sizeof(j) is: 40the sizeof(&j) is: 8the sizeof(HELLO_STR) is: 6the sizeof(HELLO_STR2) is: 7the strlen(HELLO_STR2) is: 5the strlen(HELLO_STR2) is: 5the sizeof(x) is: 9the sizeof(input) is: 8

1是一个int型,输出4,很好理解。

i是int型,输出4,也好理解。

&i是一个指针,我的mac是64位的,返回8,也好说。

j是一个int数组,占用的空间是4 * 10,返回40。

&j是一个指针,同&i

HELLO_STR,这个其实有点意思,他是被优化过的,返回了6,可以看到我的编译器给他自动append了一个 '\0',strlen(HELLO_STR)应该返回5。

HELLO_STR2同上,也是append了'\0'。这个行为有点编译器优化的意思,因为在部分嵌入式的编译器,这个返回实际上跟strlen是相同的,所以具体一个define是返回多少,有点看编译器。

x的size是9,也好说,矩阵是3*3的,char的空间是9

最后的input,就有意思了,为什么是8呢?因为虽然函数定义是input[3][3],但是实际传入到函数的是一个int指针,指针,返回指针的大小。

c语言 sizeof在哪个库,c语言的sizeof到底应该返回什么?相关推荐

  1. 易语言 标准c 动态库,易语言Dll动态库的开发

    一.关于易语言DLL 易语言Dll动态库的开发是编程当中和其他语言开发进行交互必不可少的方法之一,从易语言3.6版开始,已经能够支持对DLL动态链接库的开发, 编译出的DLL是标准的DLL,和其他编程 ...

  2. c语言程序阅读题库,C语言程序设计-阅读程序题库及答案.doc-资源下载在线文库www.lddoc.cn...

    C语言程序设计-------阅读程序题库及答案.doc 阅读程序题 2 1 以下程序的输出结果是 main D float a a 1 100000000 printf g a A 0 00000e ...

  3. c语言调用c 的库,C语言程序调用C库函数方法

    C语言程序调用C 库函数方法,关键是函数名字解析问题. 其实实现起来不是很难. 使用关键字 extern \"C\" 可以使得C 编译器生成的函数名满足C语言的要求 例子如下: 链 ...

  4. c语言程序设计编程题库,C语言程序设计习题库.doc

    C语言程序设计习题库 选择练习题 1.C语言中最简单的数据类型包括( B ). A.整型,实型,逻辑型B.整型,实型,字符型 C.整型,字符型,逻辑型D.整型,实型,逻辑型,字符型 2.C语言中,运算 ...

  5. c语言图片处理函数库,C语言图形开发库函数graphics.doc

    C语言图形开发库函数graphics 函数名: fillellipse功? 能: 画出并填充一椭圆用? 法: void far fillellipse int x, int y, int xradiu ...

  6. c语言程序设计a题库,c语言程序设计试题(A).doc

    c语言程序设计试题(A).doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文 ...

  7. c语言程序填空题库,C语言程序设计题考试题库选择填空题完整答案精美篇

    ※试题说明: 选择题共15道,2分/道:数据类型1个.选择结构2个.循环结构2个.数组3个.函数3个.预处理1个.指针2个.结构体1个.基本操作题.程序改错题.程序填空题.程序设计题.考试时间90分钟 ...

  8. C语言程序设计之标准库快速排序qsort函数用法示例

    C语言程序设计之标准库快速排序qsort函数,排序效率高,使用方便,太棒了. qsort函数定义如下: #include <stdlib.h>void qsort(void *base, ...

  9. gc:C语言的垃圾回收库-中文

    Table of Contents gc:标记并清除C的垃圾回收 致谢 文档概述 快速开始 下载,编译和测试 基本用法 核心API 启动,停止,暂停,恢复和运行GC 内存分配和释放 辅助功能 基本概念 ...

最新文章

  1. php display_errors
  2. 再见,xShell,自己用Java撸一个Web版的,网友直呼:666
  3. f5 会话保持 负载均衡_F5负载均衡配置-运维管理
  4. 计算机网络转本文科,江苏专转本计算机经验总结
  5. 二.激光SLAM框架学习之A-LOAM框架---介绍及其演示
  6. Screaming Frog SEO Spider的11个鲜为人知的功能
  7. Exception in thread “main“ java.awt.AWTError: Assistive Technology not found: org.GNOME.Accessibilit
  8. 信号与系统实验之信号的时域分析(Python+matplotlib)
  9. 如何清空c盘只剩系统_怎么把C盘东西都删除只留系统东西
  10. 修复计算机u盘,u盘损坏怎么修复 u盘损坏修复方法
  11. STM8S系列基于STVD开发,标准外设库函数开发环境搭建
  12. 合并excel单元格的两种方法
  13. 【linux内核分析与应用-陈莉君】系统调用机制
  14. 鼠标修复DoubleClickFix
  15. 关于我本人阳了个阳一事
  16. 关于声卡驱动安装问题 ghost版本的危害
  17. Linux基础命令-进程与系统性能
  18. composer类库—汉字转拼音
  19. 18、HTTP基本操作及源码编译安装 学习笔记
  20. git push 报错 Empty reply from server 或 Failed to connect to github.com port 443: Time out

热门文章

  1. 根据城市查找编号,根据编号查找城市
  2. 日历时间 linux,Linux查看日历
  3. 亚马逊云科技在中国区域新推多项服务;德州仪器携手台达打造高效能服务器电源供应器 | 全球TMT...
  4. 学计算机的做近视眼手术,上班族可以做激光近视手术吗?
  5. python创建excel文件报错_python-通过openpy操作excel
  6. 【微信小程序】生成excel并下载 | 微信 | excel | 文件下载 |
  7. 【技术实战】短信嗅探盗刷犯罪,如何进行数据提取与固定?
  8. ROS中使用CloudXNS的DDNS功能
  9. 阿里云服务器带宽测速四种方法
  10. execute和submit的区别与联系