C语言面试题 - 字符空间操作类

简介: C语言面试题 - 字符空间操作类

C/C++知识点

字符空间操作类

题目 1

题目:如下代码运行后会产生什么结果?为什么?

char str[10];
strcpy(str,"0123456789");


答案: 因为双引号自带一个 \0 ,而 str 只声明了 10 个空间,但是需要拷贝的字符长度为 11 。所以会出现越界问题,但是不同编译器不同平台上越界造成的结果不同,我们要避免上述错误的发生。

题目 2


题目:请写出以下 str 变量的 sizeofstrlen 的大小:

char str[] = "12345";
char str[10] = {'1','2','3','4','5'};
char str[] = {'1','2','3','4','5'};


答案:


第一行: sizeof 为 6 ,因为要加上 \0 ;strlen 为 5 ,因为 strlen 只要碰到 0 就会停止读入。


第二行: sizeof 为 10 ,因为已经定义了数组的大小;strlen 是随机的,因为这个定义有可能被定义在局部变量,即会被放入栈空间中,我们不知道定义完前五个数之后后面空间在内存中存的东西是什么。当然,如果被定义到全局变量,系统会自动给后面赋值为 0 ,strlen 遇到 0 就会停下,这样输出的结果就会是 5 。


第三行: sizeof 为 5 ;strlen 和上面那一个理由相同,同样是随机的,不清楚后面在内存中是否还有内容。

题目 3

题目:以下代码运行后会出现什么问题?打印结果是什么?

void main(){
    char abc[10];
    printf("%d", strlen(abc));
}


答案: 这题和上题有点相似,因为 abc 被定义到局部变量之中,所以会被放到栈空间去,数组中的值在内存中就会不确定。但是,如果将其定义在全局变量,就会自动将所有数组值初始化为 0 ,答案也会输出为 0

目录
相关文章
|
2月前
|
网络协议 编译器 Linux
【C语言】结构体内存对齐:热门面试话题
【C语言】结构体内存对齐:热门面试话题
108 0
|
24天前
|
存储 算法 C语言
【C语言】字符常量详解
字符常量是C语言中处理字符数据的重要工具。通过单引号括起一个字符,我们可以方便地使用字符常量进行字符判断、字符运算和字符串处理等操作。理解字符常量的表示方法、使用场景和ASCII码对应关系,对于编写高效的C语言程序至关重要。
102 11
|
24天前
|
存储 C语言 开发者
【C语言】格式化输出占位符及其标志字符详解(基于ISO/IEC 9899:2024)
在C语言中,格式化输出通过 `printf` 函数等格式化输出函数来实现。格式说明符(占位符)定义了数据的输出方式,标准ISO/IEC 9899:2024(C23)对这些格式说明符进行了详细规定。本文将详细讲解格式说明符的组成部分,包括标志字符、宽度、精度、长度修饰符和类型字符,并适当增加表格说明。
41 6
|
3月前
|
存储 编译器 C语言
C语言存储类详解
在 C 语言中,存储类定义了变量的生命周期、作用域和可见性。主要包括:`auto`(默认存储类,块级作用域),`register`(建议存储在寄存器中,作用域同 `auto`,不可取地址),`static`(生命周期贯穿整个程序,局部静态变量在函数间保持值,全局静态变量限于本文件),`extern`(声明变量在其他文件中定义,允许跨文件访问)。此外,`typedef` 用于定义新数据类型名称,提升代码可读性。 示例代码展示了不同存储类变量的使用方式,通过两次调用 `function()` 函数,观察静态变量 `b` 的变化。合理选择存储类可以优化程序性能和内存使用。
169 82
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
133 4
|
3月前
|
安全 Java 应用服务中间件
JVM常见面试题(三):类加载器,双亲委派模型,类装载的执行过程
什么是类加载器,类加载器有哪些;什么是双亲委派模型,JVM为什么采用双亲委派机制,打破双亲委派机制;类装载的执行过程
107 35
JVM常见面试题(三):类加载器,双亲委派模型,类装载的执行过程
|
2月前
|
JSON 调度 数据库
Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点。文章详细解析了Kotlin中的协程、扩展函数、高阶函数、密封类及`inline`和`reified`关键字在Android开发中的应用,帮助读者更好地理解和使用这些特性。
39 1
|
2月前
|
C语言
C语言字符(串)函数
C语言字符(串)函数
|
2月前
|
存储 安全 编译器
深入C语言库:字符与字符串函数模拟实现
深入C语言库:字符与字符串函数模拟实现
|
3月前
|
存储 C语言
【C语言基础考研向】10 字符数组初始化及传递和scanf 读取字符串
本文介绍了C语言中字符数组的初始化方法及其在函数间传递的注意事项。字符数组初始化有两种方式:逐个字符赋值或整体初始化字符串。实际工作中常用后者,如`char c[10]="hello"`。示例代码展示了如何初始化及传递字符数组,并解释了为何未正确添加结束符`\0`会导致乱码。此外,还讨论了`scanf`函数读取字符串时忽略空格和回车的特点。
113 8