记C语言笔试题

记2021.1.29广州通则康威笔试
面试的是软件工程师(C语言偏嵌入式)
总共6道题,30分钟。
1.static全局变量和普通全局变量的区别atic局部变量和普通局部变量的区别atic函数与普通函数的区别r> 经常会遇到的一道面试题。static修饰的全局变量限定了该全局变量的作用域,使其只作用于本模块,在本模块内有效;而普通的全局变量可以可以作用于其他的模块,作用域更大。 static修饰的局部变量储存在内存数据段的静态区,生命周期变长,作用域不变,在下次调用该变量时依旧使用上次的值。而普通的局部变量储存在栈区,在函数调用完后就会释放,下次调用又重新申请。static函数限定了其作用域,使其只在本模块内可调用,在其他模块不行。而普通函数可以在其他的模块内调用。

2.写出下面程序的执行结果。

考察关键字sizeof与函数strlen()以及字符串,数组,指针的一道基本的题目。
基于32位操作系统,sizeof()求指针所占字节,sizeof(数组名)是求数组所占的字节大小,strlen()求字符串长度,遇到‘ ’结束。输出4,6,5,5。

3.指出下面程序所有可能出现的错误。

找错误题,可能平时做的少,一开始有点懵,只找到:*ptr=8可能会引起段错误,因为指针ptr指向的空间未知,不安全。y=8358300000,感觉有点大,就写了超出了int型的范围,导致溢出。之后查了一下,确实超了几倍。在32位操作系统中,ptr=y也超出了地址取值范围。在64位操作系统中,ptr=y就没有什么问题了。这个判断语句,弄成赋值语句,由于str指向的地址也不确定,也会导致段错误。最后返回值return 0和函数的无返回值冲突,引起警告。
感觉这个题,真的是每一句都有问题,指针定义时候最好指向确定地址,如char *p=NULL;不然是一个野指针,不安全。

4.实现int myStrcpy(char *dest,const char *src),不使用strcpy及其他库函数。
笔试经常遇到的一个题。

FILE *fopen(const char *path, const char *mode);
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
int fclose(FILE *stream);

感觉还是不知道存储的数据,需要先读出有多少数据,之后再申请多大空间储存内容才行。

文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览114604 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月26日
下一篇 2021年1月26日

相关推荐