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;
}
相关推荐
房开民7 小时前
c++总结
java·开发语言·c++
毕设源码-赖学姐7 小时前
【开题答辩全过程】以 基于Java的医院器材管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
float_com8 小时前
【java常用API】----- Arrays
java·开发语言
不会写DN8 小时前
PHP 中的文件读写与上传
android·开发语言·php
LuckyTHP9 小时前
迁移shibboleth java获取shibboleth用户信息
java·开发语言
客卿1239 小时前
数论===质数统计(暴力法,)
java·开发语言
Σίσυφος19009 小时前
C++ 多肽经典面试题
开发语言·c++·面试
csdn_aspnet10 小时前
C# 求n边凸多边形的对角线数量(Find number of diagonals in n sided convex polygon)
开发语言·算法·c#
qq_2546744110 小时前
Docker 中的 镜像(
开发语言
码云社区10 小时前
JAVA二手车交易二手车市场系统源码支持微信小程序+微信公众号+H5+APP
java·开发语言·微信小程序·二手交易·闲置回收