c语言面试题目和答案
1、请填写bool,float,指针变量与“零值”比较的if
语句。
提示:这里“零值”可以是0,0.0,FALSE或者“空指针”
。例如int变量n与“零值”比较的if语句为:
if(n==0)
if(n!=0)
以此类推。
(1)请写出boolflag与“零值”比较的if语句:
【标准答案】if(flag)if(!flag)
100条经典C语言笔试题目
(2)请写出floatx与“零值”比较的if语句:
【标准答案】constfloatEPSINON=0.00001;
if((x>=-EPSINON)&&(x<=EPSINON)
不可将浮点变量用“==”或“!=”与数字比较,应该设法
转化成“>=”或“<=”此类形式。
100条经典C语言笔试题目
(3)请写出char*p与“零值”比较的if语句
【标准答案】if(p==NULL)if(p!=NULL)
2、以下为Linux下的32位C程序,请计算sizeof的
值。
charstr[]=“Hello”;
char*p=str;
intn=10;
请计算
(1)sizeof(str)=(2)sizeof(p)=
(3)sizeof(n)=
【标准答案】
(1)6、(2)4、(3)4
(4)voidFunc(charstr[100])
{
……;
}
请计算sizeof(str)=
(5)void*p=malloc(100);
请计算sizeof(p)=
【标准答案】(4)4、(5)4
4、用变量a给出下面的定义
e)一个有10个指针的数组,该指针是指向一个整型数
的;
f)一个指向有10个整型数数组的指针;
g)一个指向函数的指针,该函数有一个整型参数并返
回一个整型数;
h)一个有10个指针的数组,该指针指向一个函数,该
函数有一个整型参数并返回一个整型数;
【标准答案】e)int*a[10];f)int(*a)[10]
g)int(*a)(int);h)int(*a[10])(int)
5、设有以下说明和定义:
typedefunion{longi;intk[5];charc;}DATE;
structdata{intcat;DATEcow;doubledog;}too;
DATEmax;
则语句printf("%d",sizeof(structdate)+sizeof(max));的
执行结果是:_____
【标准答案】DATE是一个union,变量公用空间.里面最
大的变量类型是int[5],占用20个字节.所以它的大小是
20
data是一个struct,每个变量分开占用空间.依次为int4+
DATE20+double8=32.
所以结果是20+32=52.
当然...在某些16位编辑器下,int可能是2字节,那么结果
是int2+DATE10+double8=20
6、请问以下代码有什么问题:
intmain()
{
chara;
char*str=&a;
strcpy(str,"hello");
printf(str);
return0;
}
【标准答案】没有为str分配内存空间,将会发生异常
问题出在将一个字符串复制进一个字符变量指针所指
地址。虽然可以正确输出结果,但因为越界进行内在
读写而导致程序崩溃。
7、请问以下代码有什么问题:
char*s="AAA";
printf("%s",s);
s[0]='B';
printf("%s",s);
有什么错?
【标准答案】"AAA"是字符串常量。s是指针,指向这个
字符串常量,所以声明s的时候就有问题。
cosntchar*s="AAA";
然后又因为是常量,所以对是s[0]的赋值操作是不合法
的。
8、int(*s[10])(int)表示的是什么啊
【标准答案】int(*s[10])(int)函数指针数组,每个指针
指向一个intfunc(intparam)的函数。
9、c和c++中的struct有什么不同?
【标准答案】c和c++中struct的主要区别是c中的struct
不可以含有成员函数,而c++中的struct可以。c++中
struct和class的主要区别在于默认的存取权限不同,
struct默认为public,而class默认为private
10、voidgetmemory(char*p)
{
p=(char*)malloc(100);
strcpy(p,“helloworld”);
}
intmain()
{
char*str=NULL;
getmemory(str);
printf(“%s/n”,str);
free(str);
return0;
}会出现什么问题?
【标准答案】程序崩溃,getmemory中的malloc不能返回
动态内存,free()对str操作很危险。
11、charszstr[10];
strcpy(szstr,"");
产生什么结果?为什么?
【标准答案】长度不一样,出现段错误。
100条经典C语言笔试题目
12、数组和链表的区别?
【标准答案】数组:数据顺序存储,固定大小;
链表:数据可以随机存储,大小可动态改变
13、voidmain()
{
charaa[10];
printf(“%d”,strlen(aa));
}
会出现什么问题?打印结果是是多少?
【标准答案】sizeof()和初不初始化,没有关系,
strlen()和初始化有关,打印结果值未知。
14、给定结构structA
{
chart:4;
chark:4;
unsignedshorti:8;
unsignedlongm;
};问sizeof(A)=?
【标准答案】8
15、structname1{
charstr;
shortx;
intnum;
};求sizeof(name1)?
【标准答案】8
16、structname2{
charstr;
intnum;
shortx;
};求sizeof(name2)?
【标准答案】12
17、程序哪里有错误
wap(int*p1,int*p2)
{
int*p;
*p=*p1;
*p1=*p2;
*p2=*p;
}
【标准答案】p为野指针(指向一个已删除的对象或未申请访问受限内存区域的指针)
19、(void*)ptr和(*(void**))ptr的结果是否相同?其
中ptr为同一个指针。
【标准答案】(void*)ptr和(*(void**))ptr值是相同的
20、要对绝对地址0x100000赋值,我们可以用
(unsignedint*)0x100000=1234;
那么要是想让程序跳转到绝对地址是0x100000去执行
,应该怎么做?
【标准答案】*((void(*)())0x100000)();
首先要将0x100000强制转换成函数指针,即:
(void(*)())0x100000
然后再调用它:
*((void(*)())0x100000)();
本文发布于:2023-03-07 07:52:58,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1678146779128724.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:c语言面试题.doc
本文 PDF 下载地址:c语言面试题.pdf
留言与评论(共有 0 条评论) |