由朗讯的一道笔试题想到的

凸优化 学习总结 学习对象是MIT的凸优化教材,凸优化学习的理论总结 比较有借鉴意义! 立即下载


  首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动∣专 题∣SUN∣IBM∣微 软∣微 创∣精 华∣Donews∣人 邮
我的技术中心 
我的分类我的文档
全部文章发表文章
专栏管理使用说明

<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1076724771190722&dt=1127999126296&lmt=1127702876&format=125x125_as&output=html&url=http%3A%2F%2Fdev.youkuaiyun.com%2Fdevelop%2Farticle%2F77%2F77435.shtm&ref=http%3A%2F%2Fwww.youkuaiyun.com%2FLoginPageSideColumns.aspx&cc=217&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="125" scrolling="no" height="125" allowtransparency="65535">

 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
fatalerror99 (45)
zeroless (17)
ilovevc (26)
redbeans (4)
jerryfleming (5)
eXile_ (1)
Amoon100 (10)
machozhao (2)
fire_woods (7)
BigFanOfCpp (12)
优快云 - 文档中心 - 其他开发语言 阅读:0   评论: 0    参与评论
标题  由朗讯的一道笔试题想到的!     选择自 cxyol 的 Blog
关键字  由朗讯的一道笔试题想到的!
出处 

朗讯的笔试题是这样的:

Typedef union student

{

       Char name[10];

       Long sno;

       Char sex;

       Float score [4];

} STU;

Main ()

{

STU a[5];

Printf(“%d/n”,sizeof(a);

}

答案是80 ,因为union是可变的以其成员中最大的成员作为 该union的大小!

但是换成是 struct又是多少呢?

Typedef struct student

{

       Char name[10];

       Long sno;

       Char sex;

       Float score [4];

} STU;

Main ()

{

STU a[5];

Printf(“%d/n”,sizeof(a);

}

答案是 180  ????为什么不是 (10+4+1+16)*5=155? 因为struct 有个叫对齐方式的问题:

         不对齐的数据存取在x86上影响速度,因为在不对齐的时候,对于小的可能会影响 其效率,对齐即是多分配一些字节,填充无用数据,以空间的损失来换取消率。

       struct是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如array、struct、union等)的数据单元。对于结构体,编译器会自动进行成员变量的对齐,以提高运算效率。缺省情况下,编译器为结构体的每个成员按其自然对齐(natural alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。

      自然对齐(natural alignment)即默认对齐方式,是指按结构体的成员中(类型)size最大的成员作为基本的分配单元,而且与其顺序有这密切的联系。

     例如:

struct naturalalign
{
 char a;
 short b;
 char c;
};

  在上述结构体中,size最大的是short,其长度为2字节,因而结构体中的char成员a、c都以2为单位对齐,sizeof(naturalalign)的结果等于6;

    如果改为:

struct naturalalign
{
 char a;
 int b;
 char c;
};

  其结果显然为12。

    那么再回到到原题:结构体中,size最大的是long,size是 4,所以,按照顺序,Char name[10];12个字节;Long sno; 4个字节;Char sex; 4个字节(这里对齐了);Float score [4]; 16个字节。于是(12+4+4+16)×5=180,就是了!

     刚才还说过,与顺序有关,呵呵,我们改一下:

Typedef struct student

{

       Char name[10];

       Char sex;

       Long sno;

       Float score [4];

} STU;

Main ()

{

STU a[5];

Printf(“%d/n”,sizeof(a);

}

Main ()

{

STU a[5];

Printf(“%d/n”,sizeof(a);

}

Main ()

{

STU a[5];

Printf(“%d/n”,sizeof(a);

}

 

答案是:160. 为什么,只是换了顺序而已呀?关键就在顺序上。

结构体中,size最大的是long,size是 4,所以,按照顺序,Char name[10];12个字节;但是这12中多分配的2个字节可以包含后面的Char sex; (问题就在这);Float score [4]; 16个字节。于是(12+4+16)×5=160,就是了!

所以要小心呀!

2.2指定对齐

  一般地,可以通过下面的方法来改变缺省的对齐条件:

  · 使用伪指令#pragma pack (n),编译器将按照n个字节对齐;
  · 使用伪指令#pragma pack (),取消自定义字节对齐方式。

  注意:如果#pragma pack (n)中指定的n大于结构体中最大成员(类型)的size,则其不起作用,结构体仍然按照size最大的成员进行对齐。

     例如:

#pragma pack (n)
struct naturalalign
{
 char a;
 int b;
 char c;
};
#pragma pack ()

  当n为4、8、16时,其对齐方式均一样,sizeof(naturalalign)的结果都等于12。而当n为2时,其发挥了作用,使得sizeof(naturalalign)的结果为6。

  在VC++ 6.0编译器中,我们可以指定其对齐方式(见图1),其操作方式为依次选择projetct > setting > C/C++菜单,在struct member alignment中指定你要的对界方式。

图1:在VC++ 6.0中指定对界方式

  另外,通过__attribute((aligned (n)))也可以让所作用的结构体成员对齐在n字节边界上,但是它较少被使用,因而不作详细讲解。

Typedef struct student

{

       Char name[10];

       Char sex;

       Long sno;

       Float score [4];

} STU;

Main ()

{

STU a[5];

Printf(“%d/n”,sizeof(a);

}

Main ()

{

STU a[5];

Printf(“%d/n”,sizeof(a);

}

Main ()

{

STU a[5];

Printf(“%d/n”,sizeof(a);

}

 

答案是:160. 为什么,只是换了顺序而已呀?关键就在顺序上。

结构体中,size最大的是long,size是 4,所以,按照顺序,Char name[10];12个字节;但是这12中多分配的2个字节可以包含后面的Char sex; (问题就在这);Float score [4]; 16个字节。于是(12+4+16)×5=160,就是了!

所以要小心呀!

2.2指定对齐

  一般地,可以通过下面的方法来改变缺省的对齐条件:

  · 使用伪指令#pragma pack (n),编译器将按照n个字节对齐;
  · 使用伪指令#pragma pack (),取消自定义字节对齐方式。

  注意:如果#pragma pack (n)中指定的n大于结构体中最大成员(类型)的size,则其不起作用,结构体仍然按照size最大的成员进行对齐。

     例如:

#pragma pack (n)
struct naturalalign
{
 char a;
 int b;
 char c;
};
#pragma pack ()

  当n为4、8、16时,其对齐方式均一样,sizeof(naturalalign)的结果都等于12。而当n为2时,其发挥了作用,使得sizeof(naturalalign)的结果为6。

  在VC++ 6.0编译器中,我们可以指定其对齐方式(见图1),其操作方式为依次选择projetct > setting > C/C++菜单,在struct member alignment中指定你要的对界方式。

图1:在VC++ 6.0中指定对界方式

  另外,通过__attribute((aligned (n)))也可以让所作用的结构体成员对齐在n字节边界上,但是它较少被使用,因而不作详细讲解。

Typedef struct student

{

       Char name[10];

       Char sex;

       Long sno;

       Float score [4];

} STU;

Main ()

{

STU a[5];

Printf(“%d/n”,sizeof(a);

}

Main ()

{

STU a[5];

Printf(“%d/n”,sizeof(a);

}

Main ()

{

STU a[5];

Printf(“%d/n”,sizeof(a);

}

 

答案是:160. 为什么,只是换了顺序而已呀?关键就在顺序上。

结构体中,size最大的是long,size是 4,所以,按照顺序,Char name[10];12个字节;但是这12中多分配的2个字节可以包含后面的Char sex; (问题就在这);Float score [4]; 16个字节。于是(12+4+16)×5=160,就是了!

所以要小心呀!

2.2指定对齐

  一般地,可以通过下面的方法来改变缺省的对齐条件:

  · 使用伪指令#pragma pack (n),编译器将按照n个字节对齐;
  · 使用伪指令#pragma pack (),取消自定义字节对齐方式。

  注意:如果#pragma pack (n)中指定的n大于结构体中最大成员(类型)的size,则其不起作用,结构体仍然按照size最大的成员进行对齐。

     例如:

#pragma pack (n)
struct naturalalign
{
 char a;
 int b;
 char c;
};
#pragma pack ()

  当n为4、8、16时,其对齐方式均一样,sizeof(naturalalign)的结果都等于12。而当n为2时,其发挥了作用,使得sizeof(naturalalign)的结果为6。

  在VC++ 6.0编译器中,我们可以指定其对齐方式(见图1),其操作方式为依次选择projetct > setting > C/C++菜单,在struct member alignment中指定你要的对界方式。

图1:在VC++ 6.0中指定对界方式

  另外,通过__attribute((aligned (n)))也可以让所作用的结构体成员对齐在n字节边界上,但是它较少被使用,因而不作详细讲解。


相关文章
对该文的评论


网站简介 - 广告服务 - 网站地图 - 帮助信息 - 联系方式 - English
北京百联美达美数码科技有限公司 版权所有 京ICP证020026号
Copyright © youkuaiyun.com, Inc. All Rights Reserved
安路TangDynasty和FD和JTAG驱动器安装 安路FPGA产品矩阵包含SALPHOENIX高性能、SALEAGLE高性价比和SALELF低功耗三大系列,广泛应用于网络通信、消费电子等领域。配套的TangDynasty(TD)集成开发环境支持标准设计输入,提供完整优化流程与调试工具。简要介绍了TD 6.2.1版本的安装步骤。 阅读详情

相关推荐

python爬取巨潮资讯网所有股票年报数据

爬虫获取巨潮资讯网数据

qq_42752524的博客 6112

PCA及变式与LDA ...

LDA: 有监督降维 Scikit(摘录): Linear DiscriminantAnalysis (LDA) tries to identify attributes that account for the most variancebetween classes. (类间变化最大) In particular, LDA, in contrast to PCA, is...

weixin_30474613的博客 240

Nordic开发者必备:SEGGER Embedded Studio免费许可证申请与配置全攻略

本文为Nordic芯片开发者提供了SEGGER Embedded Studio(SES)集成开发环境的详细配置指南。内容涵盖免费许可证的合规申请流程、项目创建、Nordic SDK集成,以及编辑器优化、构建调试配置、RTT日志输出等核心功能的高效设置,旨在帮助开发者构建深度优化的专业开发环境,显著提升嵌入式开发效率。

cheese的博客 353

哈希表(碰撞,复杂度)——笔试面试常考问题

散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。   建表复杂度O(n) 查找复杂度O(1)   解决碰撞的方法: 1. 链接 2. 开放寻址 3. 再哈希  

3900

python 识别滑块验证码

博客来源于: https://www.cnblogs.com/wyh0923/p/16528354.html # -*- coding: utf-8 -*- # https://gov.pkulaw.cn/ 1. import io 2. import json 3. from pathlib import Path 4. from PIL import Image 5. import bas...

2102

别再乱拖了!Godot 4.x 场景编辑器的7个隐藏操作技巧(附快捷键清单)

本文揭示了Godot 4.x场景编辑器的7个隐藏操作技巧,包括智能对齐、轴心点应用、多节点批量操作等,帮助开发者提升游戏开发效率。特别介绍了坐标系切换和自定义快捷键等实用功能,适用于处理复杂场景和团队协作。

weixin_29534421的博客 361

人脸识别的性能指标

原始链接 http://www.blogbus.com/shijuanfeng-logs/235975701.html 人脸识别中不同应用模式下的性能指标 - [人脸识别] 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://www.blogbus.com/shijuanfeng-logs/235975701.html 以前只知道测试

blueblood7的专栏 2万+

Windows平台无人机仿真:从零搭建SITL环境与QGC联调

本文详细指导了在Windows平台上从零搭建无人机软件在环(SITL)仿真环境,并与QGroundControl(QGC)进行联调的完整流程。通过使用Cygwin工具链,开发者可以在没有实体硬件的情况下,模拟运行ArduPilot飞控,并通过MAVLink协议连接QGC地面站进行全功能测试,为无人机软件开发提供了一个安全、经济的虚拟沙盒环境。

weixin_29239279的博客 407

泛型<编程>:类型化缓存(I)

泛型:类型化缓存(I)Andrei Alexandrescu 想象本篇你正要读的“泛型”部分的开头是:“本文关于怎样用C++处理内存缓冲”。 当你轻率地关掉浏览器时,如果竖起耳朵,你还会听到成千上万的鼠标在做和你一样的事情。因为谁会对处理内存缓冲这样的小事感兴趣呢? 但本文确实关于怎样在C++中处理内存缓冲,但这里有两个特殊之处。首先,缓冲是泛型的,这意味着缓冲里面能放置类型化数据(相反于原始

merced1976的专栏 2689

Linux:安装Debian最新10.x操作系统(超详细)

安装Debian最新10.x操作系统安装Debian最新10.x操作系统1.下载Debian镜像2. 镜像安装引导启动页面,选择图形化安装:选择语言、时区,选中后点击continue:选择键盘模式:配置Hostname主机名,设置Root密码创建普通用户名和密码,进入磁盘分区步骤,选择“所有文件放在同一个分区”确认分区信息磁盘配置完,进入软件安装模块:选择源:进入软件包配置,等待配置结束根据需要选择软件包安装3. 安装完成重启后登录使用 安装Debian最新10.x操作系统 1.下载Debian镜像 下载D

HowieXue 薛永浩的博客 3万+

我用 Python 监听了自己的键盘,生成击键热力图,看看每天到底在“摸鱼”还是“搬砖”?

数据采集(监听)、持久化(I/O)与可视化展示,必须是三个完全独立的模块,这符合单一职责原则。在多线程读写 Python 字典时,锁住的时间要尽可能短,防止 I/O 线程把高频的监听线程阻塞住。这类涉及底层的代码与“键盘记录木马”只有一线之隔。永远不要把击键记录通过网络上传,所有数据必须localhost消化。人脑对枯燥的 JSON 日志是不敏感的,但对颜色和空间极其敏感。这也是为什么 Prometheus + Grafana 是标配。使用ctypes。

BUG猿的博客 193

由朗讯的一道笔试题想到的!

这几天做了一份朗讯的笔试题,想到了struct 的对齐问题,总结出来与大家共享。1.面试题:typedef union student {    char name[10];     long sno;     char sex;     float score [4]; } STU; main () { STU a[5]; printf(“%d/n

志当存高远 2776

25、压电泵致动器变形计算与测量及转弯腔射流特性的有限元分析

本文围绕压电泵致动器的变形计算与测量以及转弯腔射流特性的有限元分析展开研究。通过建立有限元模型和抛物线拟合方法,对压电泵致动器的位移和变形体积进行了详细计算,并探讨了其对传感器性能的影响。同时,利用ANSYS软件对转弯腔在不同角速率输入下的射流特性进行了仿真分析,揭示了流场分布随角速率变化的规律。研究成果为压电流体角速率传感器的设计优化提供了理论依据和技术支持。

ooo22的博客 125

struct 字对齐:-_- 由朗讯的一道笔试题想到的!

<br />这几天做了一份朗讯的笔试题,想到了struct 的对齐问题,总结出来与大家共享。<br />1.面试题:<br />typedef union student <br />{ <br />   char name[10]; <br />    long sno; <br />    char sex; <br />    float score [4]; <br />} STU; <br />main () <br />{ <br />STU a[5]; <br />printf(“%d/n”,

大方的专栏 1132

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

08年朗讯(青岛)笔试题

08年11月11日南京区朗讯(青岛)笔试题第一部分:智力题。1.兔子繁殖——斐波那契数列。2.数据推理题。3.抓球。第二部分:技术题一、C++1.写出输出结果。int main(){    int x=20,y=35;   x=y++ + x++;   y=++y + ++x;printf("%d,%d",x,y);//57,94return

sweetna的专栏 5201

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

朗讯(青岛)笔试题

朗讯(青岛)笔试题,共7页,2hours, 有些题是英文,我只记得中文了。1.Quick caculation(10分)I.a 8月1日是星期三,问到9月的第一个星期六有多少天?(包括8月1日和那个星期六)b 一月有5个星期一5个星期二5个星期三,2月1日是星期几?II.6只猫6分钟捉6只老鼠,问10分钟抓10只老鼠需要几只猫?2.Basic Algorithm(10) Given

zsoll的专栏 4438

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

阿尔卡特朗讯(青岛)2015校园招聘笔试题

前几天刚刚在海洋大学参加完笔试,考场的人真是多,小400号人,考完之后因为收到了另外公司的offer,之后就没管朗讯的了。现在有时间在这里分享一下笔试题,希望对来年有意向的师弟师妹们有帮助。     总结来说考的题都很基础,选择题35道,剩下的全是C编程的,有需要写程序输出结果的,还有一道大编程题。但是因为我不是通信专业的,前面的一半信号相关的选择题不是很好选,其他的选择题是关于linu

大懒熊 3433

朗讯(青岛)笔试题

朗讯(青岛)笔试题,共7页,2小时 1.Quick caculation(10分) I. a 8月1日是星期三,问到9月的第一个星期六有多少天?(包括8月1日和那个星期六) b 一月有5个星期一5个星期二5个星期三,2月1日是星期几? II.6只猫6分钟捉6只老鼠,问10分钟抓10只老鼠需要几只猫? 2. Basic Algorithm(10) Given an arbitrary ...

weixin_34177064的博客 193

其他公司的笔试题1

 发信人: hezhiyong (hzy), 信区: Career标 题: 朗讯(青岛)笔试题发信站: BBS 水木清华站 (Wed Oct 15 18:39:33 2003), 站内朗讯(青岛)笔试题,共7页,2hours,有些题是英文,我只记得中文了。1.Quick caculation(10分)I.a 8月1日是星期三,问到9月的第一个星期六有多少天?(包括8

程序员笔试题解答 3711

朗讯的笔试题 union struct

朗讯的笔试题是这样的: Typedef union student {        Char name[10];        Long sno;        Char sex;        Float score [4]; } STU; Main () { STU a[5]; Printf(“%d/n”,sizeof(a); } 答案是80 ,因为union是可变

Neo的专栏 814

2011.10.23朗讯笔试题

写一个函数,将节点插入双向链表中。 写出你校园网或者家里上网用的网络设备或服务器(依据tcp/ip) 写出ipad在出厂前要经过的测试 Bt跟迅雷的区别。 如果成员数据是引用,怎样初始化它。 怎样申明构造函数以便能用该对象申明一个数组。 模板跟宏的相似处跟区别 写出时间片分配的方式及其优缺点。 TPYE&var;  语句的含义 进程跟线程的区别

SdustLiYang的专栏 1240

阿尔卡特朗讯笔试题汇总

-----以下内容均来自网上—————— 1.  自己定义数据结构,写出程序:在一个单向链表中,往I位置插入一个节点。   2.  自己定义数据结构,写出程序:二叉树的前序遍历。   3.  不允许使用系统时间,写出一个随机数生成函数。      4.  连环游戏,每一题的答案将在下一题中用到。     1、{first 10-digit prime found in consecutiv...

yjyj001的专栏 695

C++笔试题大全----下

一、输入一个n ,然后在屏幕上打印出NxN的矩阵! 例如,输入一个3,则 1 23 8 94 7 65 输入一个4,则 1 2 3 4 1213 14 5 1116 15 6 10 98 7 参考答案:   #include #include #define N 10   void printCube(int

天涯明月的专栏 1302

计算机笔试题集锦

1. 华为C/C++笔试题(1)2. 华为C/C++笔试题(2)3. 华为C/C++笔试题(3)4. 华为C/C++笔试题(4)5. 华为C/C++笔试题(5)6. 华为笔试题及解答         7. 华为笔试网络题      8. 华为新员工转正笔试题9. C/C++笔试题(1)         10. 嵌入式C语言16道试题1. 网通   同方数码   飞漫软件   朗讯(青岛)    微

阿泰 5075
上一篇: 记一些东西
下一篇: 2005年国内各大公司的薪酬情况
studyingvs
博客等级 码龄23年 2粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值