嘿嘿嘿嘿,你看我像指针吗?
不会写,等我啥时候会写了再说吧,真的累了,倦了
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;
}