教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 资格考试 >

【华为】C 语言面试题大汇总之华为面试题(3)

来源:网络收集 时间:2026-09-07
导读: 2)可以修饰参数,作为输入参数. 3)修饰函数,防止以外的改动. 4)修饰类的成员函数,不改变类中的数据成员. 5、关键字volatile有什么含意?并举出三个不同的例子? 答:提示编译器对象的值可能在编译器未监测到的情况下

2)可以修饰参数,作为输入参数.

3)修饰函数,防止以外的改动.

4)修饰类的成员函数,不改变类中的数据成员.

5、关键字volatile有什么含意?并举出三个不同的例子?

答:提示编译器对象的值可能在编译器未监测到的情况下改变。

例子:硬件时钟;多线程中被多个任务共享的变量等

6.int(*s[10])(int)表示的是什么啊

int(*s[10])(int)函数指针数组,每个指针指向一个intfunc(intparam)的函数。

1.有以下表达式:

inta=248;b=4;intconstc=21;constint*d=&a;

int*conste=&b;intconst*fconst=&a;

请问下列表达式哪些会被编译器禁止?为什么?

答:*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f;

*c这是个什么东东,禁止

*d说了是const,禁止

e=&a说了是const禁止

const*fconst=&a;禁止

2.交换两个变量的值,不使用第三个变量。即a=3,b=5,交换之后a=5,b=3;

答:有两种解法,一种用算术算法,一种用^(异或)

a=a+b;

b=a-b;

a=a-b;

or

a=a^b;//只能对int,char..

b=a^b;

a=a^b;

or

a^=b^=a;

3.c和c++中的struct有什么不同?

答:c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct

可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private.

4.#include<stdio.h>

#include<stdlib.h>

voidgetmemory(char*p)

{

p=(char*)malloc(100);

}

intmain()

{

char*str=NULL;

getmemory(str);

strcpy(p,"helloworld");

printf("%s/n",str);

free(str);

return0;

}

答:程序崩溃,getmemory中的malloc不能返回动态内存,free()对str操作很危险

5.charszstr[10];

strcpy(szstr,"0123456789");

产生什么结果?为什么?

答;正常输出,长度不一样,会造成非法的OS,覆盖别的内容.

6.列举几种进程的同步机制,并比较其优缺点。

答:原子操作

信号量机制

自旋锁

管程,会合,分布式系统

7.进程之间通信的途径

答共享存储系统

消息传递系统

管道:以文件系统为基础

————即使你是个编程高手,你在面试前也应该要看看这套题,她也许会给你带来好运,否则你有可能后悔当初为什么没有看而跳楼自杀,这样我会很内疚的。这套题看似简单,但你未必能得高分,即使你看不懂也要把她背下来!

欢迎转载此文,转载时请注明文章来源:文斯测试技术研究中心编程基础基本概念

1.const的理解:constchar*,charconst*,char*const的区别问题几乎是C++面试中每次都会有的题目。事实上这个概念谁都有只是三种声明方式非常相似很容易记混。Bjarne在他的TheC++ProgrammingLanguage里面给出过一个助记的方法:把一个声明从右向左读。

char*constcp;(*读成pointerto)

cpisaconstpointertochar

constchar*p;

pisapointertoconstchar;

charconst*p;

同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。

2.c指针

int*p[n];-----指针数组,每个元素均为指向整型数据的指针。

int(*p)[n];------p为指向一维数组的指针,这个一维数组有n个整型数据。

int*p();----------函数带回指针,指针指向返回的值。

int(*p)();------p为指向函数的指针。

3.数组越界问题(这个题目还是有点小险的)

下面这个程序执行后会有什么错误或者效果:

#defineMAX255

intmain()

{

unsignedcharA[MAX],i;

for(i=0;i<=MAX;i++)

A[i]=i;

}

解答:MAX=255,数组A的下标范围为:0..MAX-1,这是其一,其二当i循环到255时,循环内执行:A[255]=255;这句本身没有问题,但是返回for(i=0;i<=MAX;i++)语句时,由于unsignedchar的取值范围在(0..255),i++以后i又为0了..无限循环下去.

注:char类型为一个字节,取值范围是[-128,127],unsignedchar[0,255]

4.C++:memset,memcpy和strcpy的根本区别?

答:#include"memory.h"

memset用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为''或'';例:chara[100];memset(a,'',sizeof(a));

memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;例:chara[100],b[50];memcpy(b,a,sizeof(b));注意如用sizeof(a),会造成b的内存地址溢出。

strcpy就只能拷贝字符串了,它遇到'\0'就结束拷贝;例:chara[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字符串长度(第一个'\0'之前)是否超过50位,如超过,则会造成b的内存地址溢出。

strcpy

原型:externchar*strcpy(char*dest,char*src);

{

ASSERT((dest!=NULL)&&(src!=NULL));

Char*address=dest;

While((*dest++=*src++)!=’\0’)

Continue;

Returndest;

}

用法:#include<string.h>

功能:把src所指由NULL结束的字符串复制到dest所指的数组中。

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

返回指向dest的指针。

memcpy

原型:externvoid*memcpy(void*dest,void*src,unsignedintcount);

{

ASSERT((dest!=NULL)&&(src!=NULL));

ASSERT((dest>src+count)||(src>dest+count));//防止内存重叠,也可以用

restrict修饰指针

Byte*bdest=(Byte*)dest;

Byte*bsrc=(Byte*)src;

While(count-->0)

*bdest++=**bsrc++;

Returndest;

}

用法:#include<memory.h>

功能:由src所指内存区域复制count个字节到dest所指内存区域。

说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。

Memset

原型:externvoid*memset(void*buffer,charc,intcount);

用法:#include

功能:把buffer所指内存区域的前count个字节设置成字符c。

说明:返回指向buffer的指针。

5.ASSERT()是干什么用的

答:ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE(0),程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。例如,变量n在程序中不应该为0,如果为0可能导致错误,你可以这样写程序:

......

ASSERT(n!=0);

k=10/n;

......

ASSERT只有在Debug版本中才有效,如果编译为Release版本则被忽略。

assert()的功能类似,它是ANSIC标准中规定的函数,它与ASSERT的一个重要区别是可以用在Release版本中。

6.system("pause");作用?

答:系统的暂停程序,按任意键继续,屏幕会打印,"按任意键继续。。。。。"省去了使用getchar();

7.请 …… 此处隐藏:3325字,全部文档内容请下载后查看。喜欢就下载吧 ……

【华为】C 语言面试题大汇总之华为面试题(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/95642.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)