C语言面试题计算机专业必备,收藏的人已成功上岸!
Posted 一起学编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言面试题计算机专业必备,收藏的人已成功上岸!相关的知识,希望对你有一定的参考价值。
毕业即失业,不知道现在还流行这句话不,反正我们当时毕业的时候,流行这句话,也让人很慌。
言归正传,毕业季,为大家分享一些关于C语言的面试题。
1 用变量 a 给出下面的定义
a.一个有10个指针的数组,该指针是指向一个整型数的;
b.一个指向有10个整型数数组的指针;
c.一个指向函数的指针,该函数有一个整型参数并返回一个整型数;
d.一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;
答案:
int*a[10];
int(*a)[10]
int(*a)(int);
int(*a[10])(int);
2 写一段代码计算结构体、联合、位段、内存大小
答案:
struct A
{
inta;
charb;
floatc;
struct Ad;
doublee;
};
sizeof(A)
3 代码改错
下面代码涉及到动态内存开辟,请改正下面错误代码:
wap( int* p1,int*p2 )
{
int* p;
*p =*p1;
*p1 =*p2;
*p2 = *p;
}
答案:p 为野指针(指向一个已删除的对象或未申请访问受限内存区域的指针)
void swap(int *pa, int *pb)
{
inttmp;
tmp = *pa;
*pa = *pb;
*pb = tmp;
}
4 数组和链表的区别?
数组:数据顺序存储,固定大小;
链表:数据可以随机存储,大小可动态改变;
5 要对绝对地址0x100000赋值
要对绝对地址0x100000赋值,我们可以用:
(unsignedint*)0x100000 =1234;
那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?
答案:
*((void(*)( ))0x100000)();
(void (*)())0x100000//首先要将0x100000强制转换成函数指针
*((void (*)())0x100000)(); //然后再调用它:
6 const 有什么用途?
答案:
1.可以定义 const 常量;
2.const 可以修饰函数的参数、返回值,甚至函数的定义体。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
7 (void *)ptr 和(*(void**))ptr 的结果是否相同?
其中ptr为同一个指针。
答案:
他们的值相同。
8用#define声明一个常数,表明1年中有多少秒(忽略闰年问题)?
答案:
#defineSECONDS_PER_YEAR(60*60*24*365)UL
要点:
A.没有以分号结束;
B.懂得预处理器将为你计算常数表达式的值。即60 * 60 * 24 * 365而不是31536000.
C.考虑到了16位机将会溢出,巧妙运用了UL。
9写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个?
答案:
#define MIN(A,B) ((A) <= (B) ? (A) : (B))
要点:
A.参数用括号括起来;
B.考察能否合理运用条件运算符;
10Heap与Stack的差别?
答案: Heap是堆,Stack是栈。
Stack的空间由系统自动分配/释放,Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的自由存储区,malloc函数分配的内存空间即在堆上。
网上经典例子:
inta =0;//全局初始化区
char*p1;//全局未初始化区
voidmain(void)
{
intb;//栈
chars[] ="abc";//栈
char*p2;//栈
char*p3 ="123456";//123456\\0在常量区,p3在栈上
staticintc =0;//全局(静态)初始化区
p1 = (char*)malloc(10);//堆
p2 = (char*)malloc(20);//堆
}
11下面的声明都是什么意思?
代码:
constinta;
intconsta;
constint*a;
int*consta;
intconst* aconst;
答案:
A.前两个的作用是一样,a是一个常整型数;
B.第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以);
C.第四个意思a是一个指向整型 数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的);
D.最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数 是不可修改的,同时指针也是不可修改的)。
12sizeof和strlen的区别?
答案: sizeof是运算符,在编译时即计算好了;而strlen是函数,要在运行时才能计算。
------------ END ------------
另外,对现在我们的大多数朋友来说还是学编程技术最重要!栽一棵树最好的时间是十年前,其次是现在。对于准备学习编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
C语言C++编程学习交流圈子,QQ群:981108780【点击进入】微信公众号:C语言编程学习基地
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
编程学习书籍分享:
编程学习视频分享:
以上是关于C语言面试题计算机专业必备,收藏的人已成功上岸!的主要内容,如果未能解决你的问题,请参考以下文章