C语言—指针(3)

嘿嘿嘿嘿,你看我像指针吗?

不会写,等我啥时候会写了再说吧,真的累了,倦了

1.面试题

1)定义整形变量i;

2)p为指向整形变量的指针变量;

3)定义整形一维数组p,它有n 个整形元素;

4)定义一维指针数组p,它有n个指向整形变量的指针元素;

5)定义p为指向(含有n个整形元素的一维数组)的指针变量;

6)p为返回整形函数值的函数;

7)p为返回一个指针的函数,该指针指向整形数据;

8)p为指向函数的指针变量,该函数返回一个整形值;

9)p是一个指向整形指针变量的指针变量;

2.动态申请一个具有10个float类型元素的内存空间,从一个已有的数组中拷贝数据,

并找出第一次出现 12.35 的下标位置,并输出。

3.动态申请一个整型数组,并给每个元素赋值,要求删除第3个元素;

4.动态申请一个整型数组,并给每个元素赋值,要求在第4个元素后插入100;
思考题:
编写一个函数,实现 void *memmove(void *dest, const void *src, size_t n);的功能。
提示: 将形参dest,src 先强制类型转换为一个char* 类型,然后利用从后向前逐字节进行数据拷贝,最终返回dest 指针

cs 复制代码
#include <stdio.h>
#include <stdlib.h>


void* mymemmove(void *dest,const void* src,size_t n)
{
    char *d  = (char*)dest;
    char *s  = (char*)src;

    if((s < d) && ((s + n) > d))
    {
           d += n - 1;
           s += n - 1;
           while(n--)
           {
               // *d-- = *s--;
                *d = *s;
                 d--;
                 s--;
           }
    }
    else
    {
         while(n--)
         {
            *d = *s;
             d++;
             s++;              
         }
    }
    return dest;
}

int main(int argc,char** argv)
{
    int a[6] = {1,7,3,8,2};

    mymemmove(a+3,a+2,4*sizeof(int));

    a[2] = 100;

    for(register int i = 0; i < 6; i++)
       printf("%5d",a[i]);
    printf("\n");

    return 0;
}
相关推荐
热爱编程的小刘1 天前
Lesson05&6 --- C&C++内存管理&模板初阶
开发语言·c++
qq_12498707531 天前
基于Java Web的城市花园小区维修管理系统的设计与实现(源码+论文+部署+安装)
java·开发语言·前端·spring boot·spring·毕业设计·计算机毕业设计
froginwe111 天前
Python 条件语句
开发语言
七夜zippoe1 天前
Python统计分析实战:从描述统计到假设检验的完整指南
开发语言·python·统计分析·置信区间·概率分布
2601_949146531 天前
Python语音通知API示例代码汇总:基于Requests库的语音接口调用实战
开发语言·python
3GPP仿真实验室1 天前
【Matlab源码】6G候选波形:OFDM-IM 索引调制仿真平台
开发语言·matlab
Coder_Boy_1 天前
基于SpringAI的在线考试系统-企业级教育考试系统核心架构(完善版)
开发语言·人工智能·spring boot·python·架构·领域驱动
前端玖耀里1 天前
Linux C/C++ 中系统调用与库函数调用的区别
linux·c语言·c++
2301_765703141 天前
C++中的代理模式变体
开发语言·c++·算法
咚为1 天前
Rust tokio:Task ≠ Thread:Tokio 调度模型中的“假并发”与真实代价
开发语言·后端·rust