网站列表页模板,幼教资源网网站开发策划书,西宁网站建设建站,苏州保洁公司哪家好嘿嘿嘿嘿#xff0c;你看我像指针吗?
不会写#xff0c;等我啥时候会写了再说吧#xff0c;真的累了#xff0c;倦了
1.面试题 1#xff09;定义整形变量i#xff1b; 2#xff09;p为指向整形变量的指针变量#xff1b; 3#xff09;定…嘿嘿嘿嘿你看我像指针吗?
不会写等我啥时候会写了再说吧真的累了倦了
1.面试题 1定义整形变量i 2p为指向整形变量的指针变量 3定义整形一维数组p,它有n 个整形元素 4定义一维指针数组p,它有n个指向整形变量的指针元素 5定义p为指向含有n个整形元素的一维数组的指针变量 6p为返回整形函数值的函数 7p为返回一个指针的函数该指针指向整形数据 8p为指向函数的指针变量该函数返回一个整形值 9p是一个指向整形指针变量的指针变量
嘿嘿我猜是这样的,没时间了就这样凑合吧我写给自己看的
#include stdio.hint main() {int i; // 1.定义整形变量iint *p; // 2.p为指向整形变量的指针变量int arr[n]; // 3.定义整形一维数组p,它有n个整形元素// 注意C99及以后标准才支持变量长度数组或者在定义数组时已知n的具体值int *p[n]; // 4.定义一维指针数组p,它有n个指向整形变量的指针元素int (*p)[n]; // 5.定义p为指向含有n个整形元素的一维数组的指针变量int p(); // 6.p为返回整形函数值的函数int *p(); // 7.p为返回一个指针的函数该指针指向整形数据int (*p)(); // 8.p为指向函数的指针变量该函数返回一个整形值int **p; // 9.p是一个指向整形指针变量的指针变量return 0;
}
2.动态申请一个具有10个float类型元素的内存空间从一个已有的数组中拷贝数据并找出第一次出现 12.35 的下标位置并输出。 /*2.动态申请一个具有10个float类型元素的内存空间,从一个已有的数组中拷贝数据并找出第一次出现 12.35 的下标位置,并输出.*/#include stdio.h
#include stdlib.hint main() {float existingArray[] {1.1, 2.2, 3.3, 4.4, 5.5, 12.35, 7.7, 8.8, 9.9, 10.1};float *dynamicArray NULL;// 动态申请内存dynamicArray (float *)malloc(10 * sizeof(float));if (!dynamicArray){puts(malloc failed!);return -1;}// 从已有的数组中拷贝数据for (int i 0; i 10; i){dynamicArray[i] existingArray[i];}// 查找第一次出现12.35的位置int index -1;for (int i 0; i 10; i){if (dynamicArray[i] (float)12.35){index i;break;}}if(index ! -1){printf(第一次出现12.35的位置是: %d\n,index);}else{printf(未在数组中找到12.35\n);}// 释放内存free(dynamicArray);return 0;
}
3.动态申请一个整型数组并给每个元素赋值要求删除第3个元素 /*3.动态申请一个整型数组并给每个元素赋值要求删除第3个元素*/#include stdio.h
#include stdlib.hint main()
{// 动态申请一个能存储5个整型数据的数组int *array (int*)malloc(5 * sizeof(int));if (!array){puts(malloc failed!);return -1;}// 给数组的每个元素赋值for (int i 0; i 5; i){array[i] i 1;}printf(原始数组:);for(int i 0;i 5;i){printf(%3d,array[i]);}printf(\n);// 删除第3个元素在C中数组索引从0开始// 将第3个元素之后的所有元素向前移动一个位置for (int i 2; i 4; i){array[i] array[i 1];}// 释放被移动过的元素原来的位置的内存//free(array 2);printf(修改后的数组:);for(int i 0;i 4;i){printf(%3d,array[i]);}printf(\n);// 释放数组其余部分的内存free(array);return 0;
}
4.动态申请一个整型数组并给每个元素赋值要求在第4个元素后插入100 /*4.动态申请一个整型数组并给每个元素赋值要求在第4个元素后插入100;*/#include stdio.h
#include stdlib.hint main()
{// 动态申请一个能存储5个整型数据的数组int *array (int*)malloc(5 * sizeof(int));if (!array){puts(malloc failed);return -1;}// 给数组的每个元素赋值并打印printf(原始数组是:);for (int i 0; i 5; i){array[i] i 1;printf(%d,array[i]);}printf(\n);// 在第4个元素后插入100// 注意在C中数组索引从0开始所以第4个元素是索引为3的元素int *insert_pos array 3;*insert_pos 100;// 打印数组printf(改变之后的数组:);for (int i 0; i 5; i){printf(%d , array[i]);}printf(\n);// 释放数组内存free(array);return 0;
}
思考题 编写一个函数实现 void *memmove(void *dest, const void *src, size_t n);的功能。 提示 将形参destsrc 先强制类型转换为一个char* 类型然后利用从后向前逐字节进行数据拷贝最终返回dest 指针 #include stdio.h
#include stdlib.hvoid* 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; //因为int是4个字节,在第四个元素插入的话是移动3个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(a3,a2,4*sizeof(int)); //调用mymemmove函数将a2到a5的元素移动到a3的位置a[2] 100;for(register int i 0; i 6; i)printf(%5d,a[i]);printf(\n);return 0;
}