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;
}
相关推荐
可峰科技3 分钟前
斗破QT编程入门系列之二:认识Qt:编写一个HelloWorld程序(四星斗师)
开发语言·qt
全栈开发圈7 分钟前
新书速览|Java网络爬虫精解与实践
java·开发语言·爬虫
面试鸭11 分钟前
离谱!买个人信息买到网安公司头上???
java·开发语言·职场和发展
小白学大数据12 分钟前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫
Python大数据分析@15 分钟前
python操作CSV和excel,如何来做?
开发语言·python·excel
上海_彭彭40 分钟前
【提效工具开发】Python功能模块执行和 SQL 执行 需求整理
开发语言·python·sql·测试工具·element
334554321 小时前
element动态表头合并表格
开发语言·javascript·ecmascript
沈询-阿里1 小时前
java-智能识别车牌号_基于spring ai和开源国产大模型_qwen vl
java·开发语言
残月只会敲键盘1 小时前
面相小白的php反序列化漏洞原理剖析
开发语言·php
ac-er88881 小时前
PHP弱类型安全问题
开发语言·安全·php