当前位置: 首页 > news >正文

一维数组笔试题及其解析

Lei宝啊 :个人主页

愿所有美好不期而遇



前言:

数组名在寻常情况下表示首元素地址,但有两种情况例外:

1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小

2.&数组名,这里的数组名表示整个数组,取出的是整个数组的地址 

3.sizeof是操作符,不是函数,并且sizeof不计算括号里的表达式,他会在编译阶段检查括号里的表达式的类型属性,计算出大小。(任何表达式都有两种属性,值属性和类型属性,

int a = 3; short b = 2; b = a + b;这个表达式的值属性就是5,类型属性就是short)

前言很重要,记住哦~ 

笔试题(一维数组)

    int a[] = { 1,2,3,4 };
printf("%d\n", sizeof(a));
    printf("%d\n", sizeof(a+0));
 printf("%d\n", sizeof(*a));
    printf("%d\n", sizeof(a+1));
    printf("%d\n", sizeof(a[1]));
  printf("%d\n", sizeof(&a));
    printf("%d\n", sizeof(*&a));
      printf("%d\n", sizeof(&a+1));
      printf("%d\n", sizeof(&a[0]));
          printf("%d\n", sizeof(&a[0]+1));

先自己做再看答案和解析哦~ 

答案 

16

8

4

8

4

8

16

8

8

 8 

(博主用的是64位机器,所以地址占的空间大小为8字节) 

解析 

int main()
{int a[] = { 1,2,3,4 };printf("%d\n", sizeof(a));     //sizeof里只有数组名,计算的是整个数组的大小,16个字节printf("%d\n", sizeof(a+0));    //这里并不是单独的数组名,也许你看着加0之后还是a,但此时的//数组名意义已经变成了首元素地址,所以为4/8,(看机器位数)printf("%d\n", sizeof(*a));     //首元素为int类型,4个字节printf("%d\n", sizeof(a+1));    //这个和a+0是一个道理,指向第二个元素,是地址,4/8printf("%d\n", sizeof(a[1]));   //第二个元素,int类型,4个字节printf("%d\n", sizeof(&a));     //&a,指针类型int (*) [4],但还是指针,4/8printf("%d\n", sizeof(*&a));//这个有两种理解方式://1.&a后再解引用还是a,也就是说还是只有a,所以计算整个数组大小//2.&a的指针类型是int (*) [4],是数组指针,解引用访问的是//  int [4],是整个数组,16个字节,这就类似于int* 解引用后访问的是//  int类型的数据,4个字节,char* 解引用后访问一个字节的数据。printf("%d\n", sizeof(&a+1));   //数组指针加1,和我们的数组其实已经没有关系了,这里加1的是这个指针//,所以4/8printf("%d\n", sizeof(&a[0]));  //首元素的地址,4/8printf("%d\n", sizeof(&a[0]+1));//第二个元素的地址,4/8return 0;}


http://www.lryc.cn/news/160445.html

相关文章:

  • 微信小程序源码
  • Browserslist 信息和配置使用整理
  • Matlab 如何选择采样频率和信号长度
  • TPTU: Task Planning and Tool Usage of Large Language Model-based AI Agents
  • 【Spring IoC容器的加载过程】
  • C++多文件类的声明与实现
  • 16 “count(*)“ 和 “count(1)“ 和 “count(field1)“ 的差异
  • 【云原生进阶之PaaS中间件】第一章Redis-1.4过期策略
  • windows弹出交互式服务检测一键取消bat脚本
  • 接口使用的最佳时机
  • freertos之任务运行时间统计实验
  • Js中一些数组常用API总结
  • LlamaIndex:将个人数据添加到LLM
  • Mojo 摸脚语言,似乎已经可以安装
  • Spark 6:Spark SQL DataFrame
  • 区块链智能合约编程语言 Solidity
  • 将SSL证书设置成HTTPS的详细步骤
  • 43、Flink之Hive 读写及详细验证示例
  • 2023数模国赛C 题 蔬菜类商品的自动定价与补货决策-完整版创新多思路详解(含代码)
  • javaScript:DOM中常用尺寸
  • 决策树算法学习笔记
  • Verilog_mode常用的几个用法
  • MySQL之MHA高可用配置及故障切换
  • java实现状态模式
  • Selling a Menagerie(cf)
  • python-55-打包exe执行
  • linux并发服务器 —— IO多路复用(八)
  • 企微SCRM营销平台MarketGo-ChatGPT助力私域运营
  • linux C++ 海康截图Demo
  • MySQL的事务隔离级别