C/C++基础面试集锦(一)strcpy、memcpy

简介: **一、strcpy函数实现方法**char* strcpy(char *dest, const char *src){ assert((dest != NULL) && (src != NULL)); char *DesSrc = dest; w...

**一、strcpy函数实现方法**

char* strcpy(char *dest, const char *src)
{
    assert((dest != NULL) && (src != NULL));
    char *DesSrc = dest;
    while((*dest++ = *src++)!='\0');
    return DesSrc;
}

二、获取字符串长度函数实现方法

代码一

int getStrLen1(const char *strSrc)
{
    int len = 0;
    while(*strSrc++ != '\0')
        len++;
    return len;
}
代码二

int getStrLen2(const char *strSrc)
{
    int len = 0;
    const char *strDe = strSrc;
    while(*strSrc++ !='\0');
    len = (strSrc-strDe-1);
    return len;
}

三、memcpy函数实现方式

void *memcpy(void *dest, const void *src, size_t n)
{
    assert((dest != NULL) && (src != NULL));
    char *tempFrom = (char*)src;
    char *tempTo = (char*)dest;
    while(n-- >0)
        *tempTo++ = *tempFrom++;
    return dest;
}

心得:

C/C++开发者更忌讳眼高手低,初级程序员每天写的不是代码而是bug,基础的东西面试的时候你也许连及格分都达不到,虽然或许你已经入行几年。

总结:

  1. strcpy与memcpy不同存在于:strcpy只复制字符串,而memcpy可以复制任何内容(字符数组、结构体、类)等。strcpy不需要指定长度由结束符”\0”而结束战斗的,memcpy由第三个参数所决定

  2. strcpy返回值为char*是为了链式表达式,先复制后计算长度。

  3. 上面获取字符串长度函数中有两种方法,第二种要比第一种更高效,至于为啥?相信仔细思考便知,这正是我们C/C++开发者追求卓越所需不断思考的

相关文章
|
5月前
|
存储 算法 编译器
C++面试题其一
C++文件编译与执行的四个阶段 预处理:处理#include、#define等预处理指令。 编译:将源码翻译为目标代码。 汇编:将目标代码转换为机器指令。 链接:将目标文件和库文件合并生成可执行文件。 STL中的vector的实现,是怎么扩容的? vector通过动态数组实现,当容量不足时,分配更大的内存(通常是原来的两倍),复制旧数据到新内存,并释放旧内存。
77 2
|
5月前
|
存储 程序员 编译器
C++面试题其二
extern "C" 用于告诉编译器按照C语言的链接方式处理代码,通常用于C++代码与C代码混合编程,以防止因名字修饰(name mangling)引起的链接错误。例如: extern "C" { void c_function(); } 通过这些问题的深入理解和解答,能够更好地掌握C++编程的核心概念和实际应用,为面试做好充分的准备。
70 1
|
5月前
|
存储 网络协议 编译器
【干货总结】Linux C/C++面试知识点
Linux C/C++基础与进阶知识点,不仅用于面试,平时开发也用得上!
570 14
|
6月前
|
存储 算法 C语言
从C语言到C++_39(C++笔试面试题)next_permutation刷力扣
从C语言到C++_39(C++笔试面试题)next_permutation刷力扣
57 5
|
6月前
|
存储 编译器 C语言
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题(下)
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题
59 1
|
6月前
|
存储 编译器 Linux
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题(中)
从C语言到C++_23(多态)抽象类+虚函数表VTBL+多态的面试题
65 1
|
5月前
|
存储 安全 Java
Java面试集锦
Java面试集锦
31 0
|
6月前
|
监控 Java 测试技术
【技术面试】服务器常问面试集锦
【技术面试】服务器常问面试集锦
121 2
|
5月前
|
安全 算法 C++
C++面试题其三
继续上篇博客的解答,我们将进一步探讨C++中的一些关键概念和常见面试问题。
52 0
|
6月前
|
编译器 C++ Windows
【C++】vector问题解决(非法的间接寻址,迭代器失效 , memcpy拷贝问题)
不使用memcpy函数不就可以了,然后我们使用简单粗暴的赋值拷贝,这样就不会发生浅拷贝问题了!!!
112 1