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;
}
相关推荐
ytttr8731 小时前
隐马尔可夫模型(HMM)MATLAB实现范例
开发语言·算法·matlab
天远Date Lab1 小时前
Python实战:对接天远数据手机号码归属地API,实现精准用户分群与本地化运营
大数据·开发语言·python
listhi5201 小时前
基于Gabor纹理特征与K-means聚类的图像分割(Matlab实现)
开发语言·matlab
qq_433776421 小时前
【无标题】
开发语言·php
Davina_yu2 小时前
Windows 下升级 R 语言至最新版
开发语言·windows·r语言
阿珊和她的猫2 小时前
IIFE:JavaScript 中的立即调用函数表达式
开发语言·javascript·状态模式
listhi5202 小时前
卷积码编码和维特比译码的MATLAB仿真程序
开发语言·matlab
yuan199973 小时前
基于主成分分析(PCA)的故障诊断MATLAB仿真
开发语言·matlab
J_liaty3 小时前
Java版本演进:从JDK 8到JDK 21的特性革命与对比分析
java·开发语言·jdk
翔云 OCR API3 小时前
发票查验接口详细接收参数说明-C#语言集成完整示例-API高效财税管理方案
开发语言·c#