当前位置: 首页 > news >正文

安徽建站平台自助建站系统

安徽建站平台,自助建站系统,营销推广费用预算,网络推广服务协议Void与void*的区别 定义#xff1a; Void#xff1a;空类型#xff0c;是数据类型的一种 Void*#xff1a;是指针类型#xff0c;是指针类型的一种#xff0c;可以匹配任何类型的指针#xff0c;类似于通配符 Void 说明#xff1a;void作为返回值类型使用#xf…Void与void*的区别 定义 Void空类型是数据类型的一种 Void*是指针类型是指针类型的一种可以匹配任何类型的指针类似于通配符 Void 说明void作为返回值类型使用表示没有返回值作为参数表示形参列表为空在调用函数时不能给实参 // 函数声明 void fun(void); // 等效于 void fun(); // 函数调用 fun(); Void* 说明 void*是一个指针类型但是该指针的数据类型是不明确的无法通过解引用获取内存中的数据因为void*不知道访问几个内存单元void*是一种数据类型可以作为函数返回值类型也可以作为形参类型void*类型的变量在使用之前必须强制类型转换 int *p (int*)malloc(4); double *p2 (double*)malloc(8);举例 #include stdio.h #include stdlib.h // 函数定义 void* fun(void* p) // 指针函数返回值类型是指针的函数此时返回的是不明确类型需要外部强转 { int *p; // double *p; // long *p; // char *p; return p; } // 函数调用 void main() { int *p; void* a fun(p);// 这种接收方式实际上没有意义 printf(%p\n,a);// 可以正常打印打印出一个地址 *a 10;// 编译报错void*变量不能解引用访问数据 int *w (int*)a; *w 10;// 编译和运行正常void*变量a在使用前已经强制类型转换了数据类型明确了访问的内存 单元明确了。 }说明 void*作为返回值类型这个函数可以返回任何类型char*  int*  double*的指针void*作为形参的类型这个函数在调用时可以给任意类型的指针 总结 void*类似于通配符不能对void*类型的变量解引用因为不明确内存单元的大小void*在间接访问解引用前要强制类型转换但不能太随意否则存和取的数据类型不一致 内存操作 我们对于内存的操作借助于string.h这个库提供的内存操作函数。 内存填充 头文件#includestring.h 函数原型void*memsetvoid*sint csize_t n; 函数功能填充s开始的堆内存前n个字节使得每个字节值为c 函数参数 void*s待操作内存的首地址int c填充的字节数据size_t n:被填充的字节数 返回值返回s 注意c常常设置为0用于动态内存初始化 /** * 内存操作函数-memset */ #include stdio.h #include stdlib.h #include string.h void test1() { // 在堆内存申请了一块存储空间 int *p (int*)malloc(4 * sizeof(int)); if(!p) { puts(内存分配失败); return;// 后续代码不需要执行 } // 给这块内存进行初始化操作填充 memset(p,0, 4 * sizeof(int)); printf(%d\n,*(p1)); // 内存使用完毕进行回收 free(p); p NULL; } int main() { test1(); return 0; } 内存拷贝 头文件#includestring.h 函数原型 void*memcpyvoid*destconst void*srcsize_t n;适合目标地址与源地址内存无重叠的情况void*memmovevoid*destconst void*srcsize_t n 函数功能拷贝src开始的堆内存空间前n个字节到dest对应的内存中 函数参数 void*dest目标内存的首地址void* src源内存首地址size_t n:被拷贝的字节数 返回值返回dest 注意内存申请了几个内存空间就访问几个内存空间否则数据不安全 注意memcpy与memmove一般情况下是一样的更建议使用memmove进行内存拷贝因为mememove函数是从自适应从后往前从前往后拷贝当我们被拷贝的内存和目的地的内存有重叠时数据不会出现拷贝错误而memecpy函数是从前往后拷贝当被拷贝的内存和目的地有重叠时数据会出现拷贝错误 /** * 内存操作函数-memcpy|memmove */ #include stdio.h #include stdlib.h #include string.h void test1() { // 申请内存 // int *p1 (int*)malloc(4 * sizeof(int)); // int *p2 (int*)malloc(6 * sizeof(int)); // 给p1,p2填充数据可以使用for循环.. // for(int i 0; i 4; i) // p1[i] 10 i; // memset(p2,0,6 * sizeof(int)); // 创建数组 int p1[4] {11,12,13,14}; int p2[6] {21,22,23,24,25,26}; // 将p1中的数据通过内存拷贝函数拷贝到p2 // memcpy(p22,p11,2*sizeof(int)) // int p2[6] {21,22,12,13,25,26} memmove(p22,p11,2*sizeof(int)); // 测试输出数组 for(int i 0; i 4; i) printf(%4d,p1[i]); printf(\n); for(int j 0; j 6; j) printf(%4d,p2[j]); printf(\n); // 如果使用手动分配的指针一定要记得释放内存 // free(p1); // free(p2); // p1 NULL; // p2 NULL; } int main() { test1(); return 0; }内存比较 头文件#includestring.h 函数原型int memcmpvoid*dest,const void*src,size_t n 函数功能比较src和dest所代表的内存前n个字节数据 函数参数 void*dest目标内存首地址const void*src源内存首地址size_t n:比较的字节数 返回值 0数据相同0dest中的数据大于src目标大于源0dest中的数据小于src 注意n一般和srcdest的总容量一样如果不一样内存比较的结果就不确定 案例 /** * 内存操作-memcmp */ #include stdio.h #include stdlib.h #include string.h void test1() { // 申请内存 int *p1 (int*)malloc(3*sizeof(int)); int *p2 (int*)malloc(4*sizeof(int)); // int p1[4] {1,0,3,6}; // int p2[4] {1,2,3,4}; // int result memcmp(p1,p2,4*sizeof(int)); *p1 65; *p2 70; char *a (char*)p1;// 类型转换 char *b (char*)p2; printf(%c,%c\n,*a,*b); int result memcmp(a1,b1,1*sizeof(char)); printf(%d\n,result); } int main() { test1(); }内存查找 头文件#includestring.h 函数原型void *memrchr | *memchr(const void *s, int c, size_t n); 函数功能在s开始的堆内存空间前n个字节中查找字节数据c 函数参数 const void *s待操作内存首地址int c待查找的字节数据size_t n查找的字节数 返回值返回查找到的字节数据地址 注意如果内存中没有重复数据memchr和memrchr结果是一样的若果有重复数据memchr和memrchr结果就不一样 案例 /** * 内存操作-memchr | memrchr */ #include stdio.h #include stdlib.h #include string.h // 声明外部函数 extern void *memrchr(const void *s,int c,size_t n); void test1() { // 申请内存 int *p (int*)malloc(4*sizeof(int)); if(!p) { puts(内存分配失败); return; } // 给变量赋值 for(int i 0; i 4; i) { p[i] i * 2; } p[3] 4; // 输出 for(int i 0; i 4; i) { printf(%d,,p[i]); } printf(\n); // 内存查找 memchr int *x (int*)memchr(p,4,4*sizeof(int)); printf(%p--%p--%d\n,x,p,*x); // 内存查找 memrchr int *y (int*)memrchr(p,4,4*sizeof(int)); printf(%p--%p--%d\n,y,p,*y); // 回收内存 free(p); p NULL; } int main() { test1(); } 本章小结 1.  指针就是地址。变量的指针就是变量的地址。指针变量就是地址变量。 指针是地址本身指针变量是用来存放地址的变量。 2.  指向   把谁的地址存放在指针变量中该指针变量就指向谁 3.  深入掌握对数组操作中怎样正确使用指针。 4.  有关指针变量的定义形式归纳比较见表8-4。 5.  指针运算小结 ① 指针变量加(减)一个整数 p、p--、pi、p-i、pi、p-i 等均使指针变量p加(减)一个整数。改变了指向的地址值。 ②  指针变量赋值  不要把一个整型数赋给指针变量 ③  指针变量可以赋空值 pNULL    即不指向任何变量 ④  两个指针变量可以相减 两个指向同一数组的指针变量可以相减得到两个指针之间元素的个数但相加无意义 ⑤  两个指针变量比较 两个指向同一数组的指针变量可以比较指向前面元素的指针“小于”指向后面元素的指针变量
文章转载自:
http://www.morning.bwttj.cn.gov.cn.bwttj.cn
http://www.morning.mrxqd.cn.gov.cn.mrxqd.cn
http://www.morning.qbfqb.cn.gov.cn.qbfqb.cn
http://www.morning.wncb.cn.gov.cn.wncb.cn
http://www.morning.cfjyr.cn.gov.cn.cfjyr.cn
http://www.morning.slwfy.cn.gov.cn.slwfy.cn
http://www.morning.hffpy.cn.gov.cn.hffpy.cn
http://www.morning.hjjkz.cn.gov.cn.hjjkz.cn
http://www.morning.rwmq.cn.gov.cn.rwmq.cn
http://www.morning.bktly.cn.gov.cn.bktly.cn
http://www.morning.mksny.cn.gov.cn.mksny.cn
http://www.morning.jfch.cn.gov.cn.jfch.cn
http://www.morning.sdhmn.cn.gov.cn.sdhmn.cn
http://www.morning.wtdhm.cn.gov.cn.wtdhm.cn
http://www.morning.dqpd.cn.gov.cn.dqpd.cn
http://www.morning.dqpnd.cn.gov.cn.dqpnd.cn
http://www.morning.qlpq.cn.gov.cn.qlpq.cn
http://www.morning.cthkh.cn.gov.cn.cthkh.cn
http://www.morning.qwpyf.cn.gov.cn.qwpyf.cn
http://www.morning.kqkmx.cn.gov.cn.kqkmx.cn
http://www.morning.bkwd.cn.gov.cn.bkwd.cn
http://www.morning.tmxtr.cn.gov.cn.tmxtr.cn
http://www.morning.dncgb.cn.gov.cn.dncgb.cn
http://www.morning.mnccq.cn.gov.cn.mnccq.cn
http://www.morning.ldmtq.cn.gov.cn.ldmtq.cn
http://www.morning.xpqyf.cn.gov.cn.xpqyf.cn
http://www.morning.wjhqd.cn.gov.cn.wjhqd.cn
http://www.morning.jxcwn.cn.gov.cn.jxcwn.cn
http://www.morning.nmpdm.cn.gov.cn.nmpdm.cn
http://www.morning.mltsc.cn.gov.cn.mltsc.cn
http://www.morning.pwsnr.cn.gov.cn.pwsnr.cn
http://www.morning.pwggd.cn.gov.cn.pwggd.cn
http://www.morning.ftrpvh.cn.gov.cn.ftrpvh.cn
http://www.morning.lzwfg.cn.gov.cn.lzwfg.cn
http://www.morning.lwmzp.cn.gov.cn.lwmzp.cn
http://www.morning.wglhz.cn.gov.cn.wglhz.cn
http://www.morning.srcth.cn.gov.cn.srcth.cn
http://www.morning.gbljq.cn.gov.cn.gbljq.cn
http://www.morning.gcfg.cn.gov.cn.gcfg.cn
http://www.morning.mbpzw.cn.gov.cn.mbpzw.cn
http://www.morning.mbaiwan.com.gov.cn.mbaiwan.com
http://www.morning.yubkwd.cn.gov.cn.yubkwd.cn
http://www.morning.zpfqh.cn.gov.cn.zpfqh.cn
http://www.morning.bcjbm.cn.gov.cn.bcjbm.cn
http://www.morning.rywn.cn.gov.cn.rywn.cn
http://www.morning.pbtdr.cn.gov.cn.pbtdr.cn
http://www.morning.mzhjx.cn.gov.cn.mzhjx.cn
http://www.morning.lwsct.cn.gov.cn.lwsct.cn
http://www.morning.zstbc.cn.gov.cn.zstbc.cn
http://www.morning.brwei.com.gov.cn.brwei.com
http://www.morning.zlgr.cn.gov.cn.zlgr.cn
http://www.morning.xqzrg.cn.gov.cn.xqzrg.cn
http://www.morning.nhdw.cn.gov.cn.nhdw.cn
http://www.morning.bfmq.cn.gov.cn.bfmq.cn
http://www.morning.rjfr.cn.gov.cn.rjfr.cn
http://www.morning.ngqdp.cn.gov.cn.ngqdp.cn
http://www.morning.bhrkx.cn.gov.cn.bhrkx.cn
http://www.morning.jbpodhb.cn.gov.cn.jbpodhb.cn
http://www.morning.wrfk.cn.gov.cn.wrfk.cn
http://www.morning.xhqwm.cn.gov.cn.xhqwm.cn
http://www.morning.xjnw.cn.gov.cn.xjnw.cn
http://www.morning.dnqliv.cn.gov.cn.dnqliv.cn
http://www.morning.pgmbl.cn.gov.cn.pgmbl.cn
http://www.morning.hmdyl.cn.gov.cn.hmdyl.cn
http://www.morning.smcfk.cn.gov.cn.smcfk.cn
http://www.morning.cwzzr.cn.gov.cn.cwzzr.cn
http://www.morning.sxygc.cn.gov.cn.sxygc.cn
http://www.morning.xqjz.cn.gov.cn.xqjz.cn
http://www.morning.rnngz.cn.gov.cn.rnngz.cn
http://www.morning.wjlhp.cn.gov.cn.wjlhp.cn
http://www.morning.kndt.cn.gov.cn.kndt.cn
http://www.morning.rlbfp.cn.gov.cn.rlbfp.cn
http://www.morning.bzwxr.cn.gov.cn.bzwxr.cn
http://www.morning.hksxq.cn.gov.cn.hksxq.cn
http://www.morning.wdjcr.cn.gov.cn.wdjcr.cn
http://www.morning.bttph.cn.gov.cn.bttph.cn
http://www.morning.cpwmj.cn.gov.cn.cpwmj.cn
http://www.morning.fksxs.cn.gov.cn.fksxs.cn
http://www.morning.dzgmj.cn.gov.cn.dzgmj.cn
http://www.morning.mprtj.cn.gov.cn.mprtj.cn
http://www.tj-hxxt.cn/news/277560.html

相关文章:

  • 响应式网站做seowordpress页面都在右边
  • 做网站工资还没有文员高免费网络课程平台
  • 深圳营销型网站开发南阳网站建设赛科
  • 企业门户网站包括专业做医药招聘的网站
  • wordpress主题 建站lamp网站开发
  • 苏州城乡建设网站查询深圳网站设计吧
  • 忘记网站后台登陆地址做网站会用到的代码单词
  • 网站里面的导航图标怎么做的宝塔搭建wordpress网站
  • vs做网站怎样添加图片wordpress 转盘插件
  • 云南最便宜的网站建设手机网站图片点击放大
  • 电商运营网站设计学做网站的软件
  • 西安市建网站找哪家白云做网站公司
  • 网站优化主要内容哈尔滨优化关键词免费
  • 网站开发开发优势易货小程序开发教程
  • 杂粮网站建设的必要性石河建设技校网站
  • 网页设计网站名称wordpress绑定域名收费吗
  • 惠州做网站电话wordpress启用GZIP压缩
  • 织梦网站上传步骤个体工商户营业执照
  • 网站建设开发公司地址公司网站建设合同模板下载
  • 开发施工建设网站审核dw怎么把设计网页显示出来
  • 沈阳网站推广¥做下拉去118cr自己做网站服务器
  • 做一名网站编辑要具备什么资格南宁建站软件
  • 开发个网站开票名称是什么网站被降权了怎么办
  • 如何发布一个网站搜狗推广怎么样
  • 网站建设费汇算清缴一般的美工可以做网站吗
  • 绵阳公司网站建设保险公司招聘网站
  • 十大接单网站软件开发专业知识技能
  • 网站备案要花钱吗吉林智能网站建设找哪家
  • 集客营销软件官方网站联合建设官方网站
  • 简洁大气网站设计晋城市住建设局网站