嵌入式研发工程师笔试试题/重解几道华为经典C语言面试题
本文档主要围绕C语言面试题展开,涵盖了字符串、字符数组、strcpy函数、strlen函数、static变量、auto变量、switch语句等多个知识点,旨在帮助读者巩固C语言基础知识,提高编程能力。
一、字符串和字符数组
在C语言中,字符串和字符数组是两个不同的概念。字符串是以null结尾的字符序列,而字符数组则是一种数据结构,用于存储字符。字符串有默认的结束符‘\0’,而字符数组需要手动添加结束符。
在test1函数中,我们看到strcpy函数被用于复制字符串,但由于目的数组的大小不足,导致了越界问题。这是因为strcpy函数需要知道目标数组的大小,以避免越界问题。
二、strcpy函数和strlen函数
strcpy函数用于复制字符串,而strlen函数用于获取字符串的长度。strcpy函数的第二个参数应该是一个字符串常量,而不是字符数组。strlen函数获取字符串的长度,不包括结束符‘\0’。
在test2函数中,我们看到strcpy函数的第二个参数是一个字符数组,而不是字符串常量。这将导致strcpy函数无法正确地复制字符串。同时,我们也看到变量i没有定义,这将导致编译错误。
三、static变量和auto变量
在C语言中,static变量和auto变量是两种不同的变量类型。static变量在程序启动时被初始化,并且保留其值直到程序结束。auto变量则是每次函数调用时被重新初始化。
在sum函数中,我们看到auto变量c和static变量b。auto变量c每次调用sum函数时被重新初始化,而static变量b则保留其值直到程序结束。
四、switch语句
switch语句是一种多路分支语句,用于根据不同的条件执行不同的代码块。在func函数中,我们看到switch语句没有break语句,导致了case语句的值被忽略。
五、总结
本文档涵盖了C语言的多个知识点,旨在帮助读者巩固C语言基础知识,提高编程能力。通过对字符串、字符数组、strcpy函数、strlen函数、static变量、auto变量、switch语句等知识点的理解,我们可以更好地编写C语言程序。
- 1
- 2
前往页