嵌入式研发工程师笔试试题/重解几道华为经典C语言面试题
嵌入式研发工程师笔试试题/重解几道华为经典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语言程序。