华为面试常见问题_第1页
华为面试常见问题_第2页
华为面试常见问题_第3页
华为面试常见问题_第4页
华为面试常见问题_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、虚函数 用于动态联编,是在运行是通过类型来觉得函数的调用而构造函数 是在类型完成内存分配之前调用的,不可能知道是哪个类型,所以不能为 虚函数static有什么用途:限制变量的作用域;设置变量的存储域。4) 用户进程间通信主要哪几种方式?(1)管道( pipe ):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。(2)命名管道( named pipe ):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外, 它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo 或系统调用mkfifo 来创建。(3

2、)信号( signal ):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux 除了支持 unix 早期信号语义函数 sigal 外,还支持语义符合posix.1 标准的信号函数sigaction (实际上,该函数是基于 bsd 的, bsd 为了实现可靠信号机制,又能够统一对外接口,用sigaction 函数重新实现了 signal 函数)。(4)消息( message )队列:消息队列是消息的链接表,包括posix 消息队列system v消息队列。 有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列

3、中的消息。 消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺(5)共享内存:使得多个进程可以访问同一块内存空间,是最快的可用ipc 形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。(6)信号量( semaphore ):主要作为进程间以及同一进程不同线程之间的同步手段。(7)套接字( socket ):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由 unix 系统的 bsd 分支开发出来的,但现在一般可以移植到其它类unix 系统上:linux 和 system v 的变种都支持套接

4、字。使用自旋锁需要谨慎,特别要注意以下几个问题:自旋锁实际上是忙等锁,当锁不可用时,cpu 一直循环执行 测试并设置 直到可以取得该锁, cpu 在等待自旋锁时不做任何有用的工作,仅仅是等待。因此,只有在占用锁时间极短的情况下,使用自旋锁才是合理的。当临界区很大或有共享设备的时候,需要较长时间占用锁,使用自旋锁会降低系统的性能。自旋锁可能导致系统死锁。引发这个问题最常见的情况是递归使用一个自旋锁,即如果一个已经拥有某个自旋锁的 cpu 想第 2 次获得这个锁,则该 cpu 死锁。此外,如果进程获得自旋锁后再阻塞,也有可能导致死锁的发生copy_from_user()、copy_to_user(

5、) 和 kmalloc() 等函数都有可能引起阻塞,因此在自旋锁的占用期间不能调用这些函数。1、 什么是中断?中断时cpu 做什么工作?中断是指在计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得 cpu暂时中断当前正在执行的程序而转去执行相应的事件处理程序。待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程请简述以下两个for 循环的优缺点:(16 分) ( 1)for (i = 0; i n; i+) if (condition) dosomething(); elsedoothers(); (2)if (condition) for (i = 0; i n;

6、i+) dosomething(); elsefor (i = 0; i n; i+) doothers(); (1) 优点:程序简洁;(4 分缺点:多执行了 n-1 次逻辑判断, 并且打断了循环 “流水线” 作业,使得编译器不能对循环进行优化处理,降低了效率。 (4 分) (2) 优点:循环的效率高;(4 分) 缺点:程序不简洁。(4 分) tcp/ip (transmission control protocol/internet protocol的简写,中文译名为传输控制协议/互联网络协议)协议是 internet最基本的协议,简单地说,就是由底层的ip 协议和 tcp 协议组成的。 t

7、cp/ip 协议是一组包括 tcp (传输控制协议) 协议和 ip (网际协议) 协议,udp (user datagram protocol) 协议、icmp (internet control message protocol )协议和其他一些协议的协议组。传统7 层是 :物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而tcp/ip 通讯协议采用了4 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求:a) 应用层:应用程序间沟通的层,如简单电子邮件传输(smtp) 、文件传输协议( ftp) 、网络远程访问协议( telnet)和 http 等。b) 传输层:

8、 在此层中, 它提供了节点间的数据传送服务,如传输控制协议 (tcp) 、用户数据报协议 (udp)等,tcp和 udp 给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。c) 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议( ip) 。d) 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如ethernet 、serial line 等)来传送数据。http :超文本传输协议(http)是应用层协议,由于其简捷、快速的方式,适用于分布式和合作式超媒体信息系统。 http 允许

9、使用自由答复的方法表明请求目的,它建立在统一资源识别器(uri)提供的参考原则下,作为一个地址(url)或名字( urn) ,用以标志采用哪种方法,它用类似于网络邮件和多用途网际邮件扩充协议( mime )的格式传递消息。http 是一种请求 /响应式的协议dns 是指(域名系统domain name system ) 。请用简单语言描述其工作原理。当 dns 客户机需要查询程序中使用的名称时,它会查询dns 服务器来解析该名称。客户机发送的每条查询消息都包括3 条信息,以指定服务器应回答的问题。1 指定的dns 域名,表示为完全合格的域名(fqdn) 。2 指定的查询类型,它可根据类型指定资

10、源记录,或作为查询操作的专门类型。3 dns 域名的指定类别。简述 dns 进行域名解析的过程。参考答案:首先,客户端发出dns 请求翻译ip 地址或主机名。dns 服务器在收到客户机的请求后:(1)检查 dns 服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息;(2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息;(3)若没有查到,则将请求发给根域dns服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的dns服务器发出应答信息,dns 服务器收到应答后现在缓存中存储,然后,将解析结果发给

11、客户机。(4)若没有找到,则返回错误信息。问: 3,internet上保留了哪些内部ip 有可以供使用?可以使用 或 172.16 直 172.31 或 192.168.0 直 192.168.2 6:tcp 为何采用三次握手来建立连接,若采用二次握手可以吗,请说明原因?(16 分)三次握手是为了防止已失效的连接请求再次传送到服务器端。二次握手不可行,因为:如果由于网络不稳定,虽然客户端以前发送的连接请求以到达服务方,但服务方的同意连接的应答未能到达客户端。则客户方要重新发送连接请求,若采用二次握手,服务方收到重传的请求连接后,会以为是新的请求,就会发送同意连接报文,并新开进

12、程提供服务,这样会造成服务方资源的无谓浪费。.tcp/ip 建立连接的过程?(3-way shake) 答案:在 tcp/ip 协议中, tcp 协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn 包(syn=j) 到服务器,并进入syn_send 状态,等待服务器确认;第二次握手:服务器收到syn 包,必须确认客户的syn(ack=j+1 ) ,同时自己也发送一个syn 包(syn=k ) ,即 syn+ack 包,此时服务器进入syn_recv状态;第三次握手:客户端收到服务器的synack 包,向服务器发送确认包ack(ack=k+1),此包发送完

13、毕,客户端和服务器进入established 状态,完成三次握手。华为面试题static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别? static函数与普通函数有什么区别?(20 分) static全局变量与普通全局变量的区别:static 全局变量只初使化一次,防止在其他文件单元中被引用 ;前者在主函数之前就要被初始化,(2 分) 后者无要求。 (2分)static局部变量和普通局部变量的区别:static 局部变量只被初始化一次,下一次依据上一次结果值; static全句变量是所有函数共享的变量,在一个函数使用完它后它的值会保持到下一个函数来改变它(2

14、 分) 。后者,本函数所声明的局部变量在本函数运行完之后会被销毁。(2 分)static函数与普通函数的区别: static的可以用类来访问(就是不用初始化一个类就直接使用这个类的这个static方法);(2 分) 非 static的只能通过对象来访问 (2 分) 。 static的定义里不能用到类内部非static变量值。(3 分)static在循环中定义并赋值时, 定义过程只进行一次, 而不是每个循环 1 次。 (3 分) static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝. q1:请你分别划划 osi 的七层网络结构图,和tcp/ip 的五层结构图?、 1、osi 每层

15、功能及特点a 物理层为数据链路层提供物理连接,在其上串行传送比特流,即所传送数据的单位是比特。此外,该层中还具有确定连接设备的电气特性和物理特性等功能。 b 数据链路层负责在网络节点间的线路上通过检测、流量控制和重发等手段,无差错地传送以帧为单位的数据。为做到这一点,在每一帧中必须同时带有同步、地址、差错控制及流量控制等控制信息。c 网络层为了将数据分组从源(源端系统)送到目的地(目标端系统),网络层的任务就是选择合适的路由和交换节点,使源的传输层传下来的分组信息能够正确无误地按照地址找到目的地,并交付给相应的传输层,即完成网络的寻址功能。/ d 传输层传输层是高低层之间衔接的接口层。数据传输

16、的单位是报文,当报文较长时将它分割成若干分组,然后交给网络层进行传输。传输层是计算机网络协议分层中的最关键一层,该层以上各层将不再管理信息传输问题。 e 会话层该层对传输的报文提供同步管理服务。在两个不同系统的互相通信的应用进程之间建立、组织和协调交互。例如,确定是双工还是半双工工作。f 表示层该层的主要任务是把所传送的数据的抽象语法变换为传送语法,即把不同计算机内部的不同表示形式转换成网络通信中的标准表示形式。此外,对传送的数据加密(或解密)、正文压缩(或还原)也是表示层的任务。 g 应用层该层直接面向用户,是osi 中的最高层。它的主要任务是为用户提供应用的接口,即提供不同计算机间的文件传

17、送、访问与管理,电子邮件的内容处理,不同计算机通过网络交互访问的虚拟终端功能等。2、tcp/ip a 网络接口层这是 tcp/ip 协议的最低一层,包括有多种逻辑链路控制和媒体访问协议。网络接口层的功能是接收ip 数据报并通过特定的网络进行传输,或从网络上接收物理帧,抽取出 ip 数据报并转交给网际层。b 网际网层(ip 层)该层包括以下协议: ip (网际协议) 、 icmp(internet control message protocol, 因特网控制报文协议)、arp ( address resolution protocol,地址解析协议)、rarp ( reverse addres

18、s resolution protocol,反向地址解析协议)。该层负责相同或不同网络中计算机之间的通信,主要处理数据报和路由。在 ip 层中 ,arp 协议用于将ip 地址转换成物理地址,rarp 协议用于将物理地址转换成ip 地址, icmp 协议用于报告差错和传送控制信息。 ip 协议在 tcp/ip 协议组中处于核心地位。c 传输层该层提供tcp (传输控制协议)和udp (user datagram protocol,用户数据报协议)两个协议,它们都建立在ip 协议的基础上,其中tcp 提供可靠的面向连接服务, udp 提供简单的无连接服务。传输层提供端到端,即应用程序之间的通信,主

19、要功能是数据格式化、数据确认和丢失重传等。d 应用层tcp/ip 协议的应用层相当于osi 模型的会话层、表示层和应用层,它向用户提供一组常用的应用层协议,其中包括: telnet 、smtp 、dns 等。此外,在应用层中还包含有用户应用程序,它们均是建立在tcp/ip 协议组之上的专用程序。3、osi 参考模型和tcp/ip 参考模型的区别:a osi 模型有 7 层, tcp/ip 只有 4 层;b osi 先于协议出现,因此不会偏向于任何一组特定的协议,通用性更强,但有些功能不知该放哪一层上, 因此不得不加入一些子层;tcp/ip 后于协议出现, 仅是将已有协议的一个描述,因此两者配合

20、的非常好;但他不适合其他的协议栈,不容易描述其他非tcp/ip 的网络;c osi 中网络层同时支持无连接和面向连接的通信,但在传输层上只支持面向连接的通信;tcp/ip 中网络层只支持无连接通信,传输层同时支持两种通信;d 在技术发生变化时,osi 模型比 tcp/ip 模型中的协议更容易被替换q2:请你详细的解释一下ip 协议的定义,在哪个层上面, 主要有什么作用?tcp 与 udp 呢?ip 协议( internet protocol,因特网 协议),属于osi7 层参考模型中的网络层 协议。它提供两个基本功能:寻址和分段。 寻址即常说的路由功能;分段是指对数据包的大小进行重新组装,以适

21、应不同网络对包大小的要求。速度快q3:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?q4:请问 c+的类和 c 里面的 struct有什么区别?a4:c+中的类具有成员保护功能,并且具有继承,多态这类oo 特点,而 c 里的struct 没有q5:请讲一讲析构函数和虚函数的用法和作用?a5:析构函数一般在对象撤消前做收尾工作,比如回收内存等工作,虚拟函数的功能是使子类可以用同名的函数对父类函数进行重载,并且在调用时自动调用子类重载函数,如果是纯虚函数,则纯粹是为了在子类重载时有个统一的命名而已。(说得不是很确切,自己随便找本c+的书都有说明)q6:全局变量和局部变量有什么区

22、别?实怎么实现的?操作系统和编译器是怎么知道的?a6:全局变量的生命周期是整个程序运行的时间,而局部变量的生命周期则是局部函数或过程调用的时间段。其实现是由编译器在编译时采用不同内存分配方法。全局变量在main 函数调用后,就开始分配,如果是静态变量则是在main函数前就已经初始化了。 而局部变量则是在用户栈中动态分配的(还是建议看编译原理中的活动记录这一块)q8:8086是多少位的系统?在数据总线上是怎么实现的?a8:8086 系统是 16 位系统,其数据总线是20 位,实现过程,微机原理上有,我也差不多忘了,呵呵10.用 socket 通讯写出客户端和服务器端的通讯,要求客户发送数据后能够

23、回显相同的数据。答案:服务器端: socker() 建立套接字,绑定( bind )并监听( listen),用accept ()等待客户端连接。客户端: socker() 建立套接字,连接( connect )服务器,连接上后使用send()和 recv(),在套接字上写读数据,直至数据交换完毕,closesocket()关闭套接字。服务器端: accept ()发现有客户端连接,建立一个新的套接字,自身重新开始等待连接。该新产生的套接字使用send() 和 recv ()写读数据,直至数据交换完毕, closesocket()关闭套接字。15.同步和异步有和异同,在什么情况下分别使用他们?

24、举例说明。如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程 ,在很多情况下采用异步途径往往更有效率。数据库方面:1.存储过程和函数的区别储过程是用户定义的一系列sql 语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程, 而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。2.事务是什么?事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单

25、元必须有四个属性,称为 acid(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:原子性一致性隔离性持久性解析 c 语言中的 sizeof 一、sizeof的概念sizeof 是 c 语言的一种单目操作符,如c 语言的其他操作符 +、-等。它并不是函数。sizeof 操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。二、sizeof的使用方法1、用于数据类型sizeof 使用形式: sizeof(type)数据类型必须用括号括住。如sizeof(int) 。2、用于变量 sizeof 使用形式: sizeo

26、f(var_name )或 sizeofvar_name变量名可以不用括号括住。如sizeof(var_name),sizeofvar_name等都是正确形式。带括号的用法更普遍,大多数程序员采用这种形式。注意:sizeof 操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型, 如未知存储大小的数组类型、 未知内容的结构或联合类型、 void 类型等。如 sizeof(max)若此时变量 max 定义为 intmax(),sizeof(char_v)若此时 char_v定义为 charchar_vmax 且 max 未知, sizeof(void)都不是正确形式

27、。三、sizeof的结果sizeof 操作符的结果类型是size_t,它在头文件中 typedef 为 unsignedint 类型。该类型保证能容纳实现所建立的最大对象的字节大小。1、若操作数具有类型char、unsignedchar或 signedchar,其结果等于 1。ansic 正式规定字符类型为1 字节。2、int、unsignedint、shortint、unsignedshort、longint、unsignedlong、float、double、longdouble 类型的 sizeof在 ansic 中没有具体规定,大小依赖于实现,一般可能分别为2、2、2、2、4、4、4、

28、8、10。五、sizeof的主要用途1、sizeof 操作符的一个主要用途是与存储分配和i/o 系统那样的例程进行通信。例如:void*malloc(size_tsize),size_tfread(void*ptr,size_tsize,size_tnmemb,file*stream) 。2、sizeof 的另一个的主要用途是计算数组中元素的个数。例如:void*memset (void*s,intc,sizeof(s)) 。六、建议由于操作数的字节数在实现时可能出现变化,建议在涉及到操作数字节大小时用sizeof 来代替常量计算。本文主要包括二个部分,第一部分重点介绍在vc 中,怎么样采用

29、sizeof 来求结构的大小,以及容易出现的问题,并给出解决问题的方法,第二部分总结出vc中 sizeof 的主要用法。1、 sizeof应用在结构上的情况请看下面的结构:struct mystruct double dda1; char dda; int type ; 对结构 mystruct 采用 sizeof会出现什么结果呢? sizeof(mystruct)为多少呢?也许你会这样求:sizeof(mystruct)=sizeof(double)+sizeof(char)+sizeof(int)=13 但是当在 vc 中测试上面结构的大小时,你会发现sizeof(mystruct)为 1

30、6。你知道为什么在 vc 中会得出这样一个结果吗?其实,这是 vc 对变量存储的一个特殊处理。为了提高cpu的存储速度, vc 对一些变量的起始地址做了“对齐”处理。在默认情况下,vc 规定各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。下面列出常用类型的对齐方式(vc6.0,32位系统 )。类型 对齐方式(变量存放的起始地址相对于结构的起始地址的偏移量)char偏移量必须为 sizeof(char)即 1 的倍数int 偏移量必须为 sizeof(int)即 4 的倍数float 偏移量必须为 sizeof(float)即 4 的倍数double偏

31、移量必须为 sizeof(double)即 8 的倍数short 偏移量必须为 sizeof(short)即 2 的倍数各成员变量在存放的时候根据在结构中出现的顺序依次申请空间,同时按照上面的对齐方式调整位置,空缺的字节vc 会自动填充。同时 vc 为了确保结构的大小为结构的字节边界数 (即该结构中占用最大空间的类型所占用的字节数)的倍数, 所以在为最后一个成员变量申请空间后,还会根据需要自动填充空缺的字节。下面用前面的例子来说明vc 到底怎么样来存放结构的。struct mystruct double dda1; char dda; int type ;为上面的结构分配空间的时候,vc 根据

32、成员变量出现的顺序和对齐方式,先为第一个成员 dda1 分配空间,其起始地址跟结构的起始地址相同(刚好偏移量0刚好为 sizeof(double)的倍数) ,该成员变量占用 sizeof(double)=8 个字节;接下来为第二个成员 dda分配空间,这时下一个可以分配的地址对于结构的起始地址的偏移量为 8,是 sizeof(char)的倍数,所以把 dda存放在偏移量为 8 的地方满足对齐方式,该成员变量占用sizeof(char)=1个字节;接下来为第三个成员type 分配空间,这时下一个可以分配的地址对于结构的起始地址的偏移量为9,不是sizeof(int)=4 的倍数,为了满足对齐方式

33、对偏移量的约束问题,vc 自动填充3个字节(这三个字节没有放什么东西) ,这时下一个可以分配的地址对于结构的起始地址的偏移量为12,刚好是 sizeof(int)=4 的倍数,所以把type 存放在偏移量为 12 的地方,该成员变量占用sizeof(int)=4 个字节;这时整个结构的成员变量已经都分配了空间,总的占用的空间大小为:8+1+3+4=16,刚好为结构的字节边界数(即结构中占用最大空间的类型所占用的字节数sizeof(double)=8) 的倍数 , 所 以 没 有 空 缺 的 字 节 需 要 填 充 。 所 以 整 个 结 构 的 大 小 为 :sizeof(mystruct)=

34、8+1+3+4=16,其中有 3 个字节是 vc 自动填充的,没有放任何有意义的东西。下面再举个例子,交换一下上面的mystruct 的成员变量的位置,使它变成下面的情况:struct mystruct char dda; double dda1; int type ;这个结构占用的空间为多大呢?在vc6.0 环境下,可以得到sizeof(mystruc)为24。结合上面提到的分配空间的一些原则,分析下 vc 怎么样为上面的结构分配空间的。 (简单说明)struct mystruct char dda;/偏移量为 0,满足对齐方式, dda占用 1 个字节;double dda1;/下一个可用

35、的地址的偏移量为1,不是 sizeof(double)=8 /的倍数,需要补足 7 个字节才能使偏移量变为8(满足对齐方式),因此 vc 自动填充 7个字节, dda1存放在偏移量为的地址上,它占用8 个字节。int type;/下一个可用的地址的偏移量为16,是 sizeof(int)=4 的倍 /数,满足 int的对齐方式,所以不需要vc 自动填充, type 存放在偏移量为 16 的地址上,它占用 4 个字节。;/所有成员变量都分配了空间,空间总的大小为1+7+8+4=20,不是结构的节边界数 (即结构中占用最大空间的类型所占用的字节数sizeof(double)=8) 的倍数,所以需要

36、填充 4 个字节,以满足结构的大小sizeof(double)=8的倍数。所以该结构总的大小为:sizeof(mystruc)为 1+7+8+4+4=24。其中总的有7+4=11个字节是 vc 自动填充的,没有放任何有意义的东西。2、 sizeof用法总结在 vc 中,sizeof 有着许多的用法,而且很容易引起一些错误。下面根据sizeof后面的参数对 sizeof 的用法做个总结。a参数为数据类型或者为一般变量。例如sizeof(int),sizeof(long)等等。这种情况要注意的是不同系统系统或者不同编译器得到的结果可能是不同的。例如int 类型在 16 位系统中占 2 个字节,在

37、32 位系统中占 4 个字节。b 参数为数组或指针。下面举例说明. int a50; /sizeof(a)=4*50=200; 求数组所占的空间大小int *a=new int50;/ sizeof(a)=4; a为一个指针, sizeof(a)是求指针的大小,在 32 位系统中,当然是占4 个字节。c 参数为结构或类。 sizeof 应用在类和结构的处理情况是相同的。但有两点需要注意,第一、结构或者类中的静态成员不对结构或者类的大小产生影响,因为静态变量的存储位置与结构或者类的实例地址无关。第二、没有成员变量的结构或类的大小为1,因为必须保证结构或类的每一个实例在内存中都有唯一的地址。下面举

38、例说明,class testint a;static double c;/sizeof(test)=4. test *s;/sizeof(s)=4,s为一个指针。class test1 ;/sizeof(test1)=1; d 参数为其他。下面举例说明。int func(char s5); coutsizeof(s);/ 这里将输出 4,本来 s为一个数组,但由于做为函数的参数在传递的时候系统处理为一个指针,所以sizeof(s)实际上为求指针的大小。return 1; sizeof(func( “1234” )=4/因为 func 的返回类型为 int,所以相当于/求 sizeof(int). 对齐方式是编译器设置的, vc 下默认是 8 字节对齐的。 -你的这句话欠妥,至少你可以在 vc6 下做实验,绝大多数情况下,都是4 字节对齐的。确实是 8字节对齐 ,大多数的 32 位编译器也都如此 .8字节对齐是指最大8 字节对齐,就是如果一个变量为16 字节,也只在 8 字节边界对齐 .具体的对齐边界是min( pack , maxsizeof( data ) ).如果一个结构中最大的成员只有4 字节就会以 4字节对齐 ,最大只有 2 字节就会在偶地址对齐 . 原题大意是这样的:有 n 个大小不等的自然数( 1-n) ,请将它们由小到大排

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论