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

目录
相关文章
|
1月前
|
网络协议 编译器 Linux
【C语言】结构体内存对齐:热门面试话题
【C语言】结构体内存对齐:热门面试话题
|
2月前
|
存储 编译器 C语言
C语言存储类详解
在 C 语言中,存储类定义了变量的生命周期、作用域和可见性。主要包括:`auto`(默认存储类,块级作用域),`register`(建议存储在寄存器中,作用域同 `auto`,不可取地址),`static`(生命周期贯穿整个程序,局部静态变量在函数间保持值,全局静态变量限于本文件),`extern`(声明变量在其他文件中定义,允许跨文件访问)。此外,`typedef` 用于定义新数据类型名称,提升代码可读性。 示例代码展示了不同存储类变量的使用方式,通过两次调用 `function()` 函数,观察静态变量 `b` 的变化。合理选择存储类可以优化程序性能和内存使用。
151 82
|
2月前
|
安全 Java 应用服务中间件
JVM常见面试题(三):类加载器,双亲委派模型,类装载的执行过程
什么是类加载器,类加载器有哪些;什么是双亲委派模型,JVM为什么采用双亲委派机制,打破双亲委派机制;类装载的执行过程
JVM常见面试题(三):类加载器,双亲委派模型,类装载的执行过程
|
21天前
|
JSON 调度 数据库
Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点。文章详细解析了Kotlin中的协程、扩展函数、高阶函数、密封类及`inline`和`reified`关键字在Android开发中的应用,帮助读者更好地理解和使用这些特性。
16 1
|
30天前
|
C语言
C语言字符(串)函数
C语言字符(串)函数
|
25天前
|
存储 安全 编译器
深入C语言库:字符与字符串函数模拟实现
深入C语言库:字符与字符串函数模拟实现
|
2月前
|
存储 C语言
【C语言基础考研向】10 字符数组初始化及传递和scanf 读取字符串
本文介绍了C语言中字符数组的初始化方法及其在函数间传递的注意事项。字符数组初始化有两种方式:逐个字符赋值或整体初始化字符串。实际工作中常用后者,如`char c[10]="hello"`。示例代码展示了如何初始化及传递字符数组,并解释了为何未正确添加结束符`\0`会导致乱码。此外,还讨论了`scanf`函数读取字符串时忽略空格和回车的特点。
|
1月前
|
C语言
C语言常见字符函数和字符串函数精讲
C语言常见字符函数和字符串函数精讲
|
1月前
|
Serverless 编译器 C语言
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)
|
2月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第六章 数组_一维数组_二维数组_字符数组详解
本章介绍了C语言中的数组概念及应用。数组是一种存储同一类型数据的线性结构,通过下标访问元素。一维数组定义需指定长度,如`int a[10]`,并遵循命名规则。数组元素初始化可使用 `{}`,多余初值补0,少则随机。二维数组扩展了维度,定义形式为`int a[3][4]`,按行优先顺序存储。字符数组用于存储字符串,初始化时需添加结束符`\0`。此外,介绍了字符串处理函数,如`strcat()`、`strcpy()`、`strcmp()` 和 `strlen()`,用于拼接、复制、比较和计算字符串长度。