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

网站建设分为哪几个阶段wordpress不能文件名访问

网站建设分为哪几个阶段,wordpress不能文件名访问,微网站怎么建设,wordpress 回收站在哪个文件夹探究实参与形参它们相互独立 由于主调函数的变量a#xff0c;b与被调函数的形参x#xff0c;y它们相互独立。函数 swap 可以修改变量x#xff0c;y#xff0c;但是却无法影响到主调函数中的a#xff0c;b。 现在利用取地址运算符#xff0c;分别打印它们的首地址#x…探究实参与形参它们相互独立 由于主调函数的变量ab与被调函数的形参xy它们相互独立。函数 swap 可以修改变量xy但是却无法影响到主调函数中的ab。 现在利用取地址运算符分别打印它们的首地址让我们从内存的角度来分析一下它们。 a在内存中为首地址10484860开始的 sizeof(int) 字节。 b在内存中为首地址10484856开始的 sizeof(int) 字节。 x在内存中为首地址10484832开始的 sizeof(int) 字节。 y在内存中为首地址10484836开始的 sizeof(int) 字节。 调用 swap 函数时a的值1传给x。b的值2传给y。 图中红色数值为数据对象首地址黑框内的为变量名和值。 即使xy已经交换了但是并未影响ab。  将指针作为参数传递 由于在被调函数内部无法直接修改主调函数的变量。那么我们采用迂回战术在函数 main 中取得a、b 的指针。将两个指针传递到函数 swap 。那么在函数 swap 内部可以根据这两个信息修改a、b。 这下我们就需要用到指针类型作为参数了。 现在将 x 、 y 改为了 int * 类型的指针。在主调函数中对 a b 进行取地址获取指针并传入函 数 swap 。在函数 swap 内部通过这两个指针交换目标数据对象的值。注意不是交换指针xy的值 而是交换目标数据对象ab的值。所以需要在指针前使用取值运算符*。 图中红色数值为数据对象首地址黑框内的为变量名和值。 现在终于能解释为何在使用 scanf 函数时需要对变量先取地址再传入参数了。 int n; scanf(%d, n); scanf 会从读取从键盘的输入转换后存储到变量n当中。被调函数 scanf 无法直接修改在主调函数中的变量n。因此我们将变量n的指针传入 scanf 函数。通过指针使得被调函数间接地修改主调函数中的变量。 指针不仅仅是首地址 再次强调指针内保存的不仅仅是目标数据对象首地址指针的类型也非常重要。要在内存中找到一个数据对象需要有以下两个信息。 数据对象的首地址。数据对象占用存储空间大小。 指针的值保存着数据对象首地址指针类型对应着目标数据对象的类型用于标记目标数据对象的空间大小和指针运算时的步长。 char * 目标数据对象大小为 sizeof(char) 。运算时步长为sizoef(char)。 short * 目标数据对象大小为 sizeof(short) 。运算时步长为sizoef(short)。 int * 目标数据对象大小为 sizeof(int) 。运算时步长为sizoef(int)。 long * 目标数据对象大小为 sizeof(long) 。运算时步长为sizoef(long)。 long long * 目标数据对象大小为 sizeof(long long) 。运算时步长为sizoef(long long)。 float * 目标数据对象大小为 sizeof(float) 。运算时步长为sizoef(float)。 double * 目标数据对象大小为 sizeof(double) 。运算时步长为sizoef(double)。 若要用函数 swap 交换两个int类型的变量必须传入指向这两个int类型变量的指针。函数内部可以通过指针知道对象的首地址和类型。但是这样也使得函数 swap 只能交换int类型的变量了。 如果想让函数 swap 函数更加通用一点可以交换更多类型的变量。应该怎么做呢 仅有首地址的指针类型void * 由于指针类型定死了指针所指向的数据类型。为了让函数可以交换更多的数据类型我们仅需要指针类型中保存的首地址目标数据大小通过额外的参数传入。 void swap(void *x, void *y, int size) int * 修改为 void * 。类型为 void * 的指针仅保存首地址不保存目标数据对象的空间大小。所以 不能对 void * 类型的指针进行取值。同样的它也没有步长所以不能对 void * 类型的指针进行加减运算。 int n; void *p n;   // int *赋值给void *类型信息被丢弃仅保存首地址。 *p;     // 仅有首地址未保存目标数据对象大小无法取值。 p 1; // 仅有首地址没有步长无法进行加减运算。 但是 void * 有一个好处那就是任意类型的指针都可以直接赋值给它。而其他类型的指针是不能相互赋值的由于赋值会改变目标数据对象的类型。 char *pc; int *pn; pc pn;    // 编译出错目标数据对象类型不同无法直接赋值。 void *p; p pn;     // 编译通过任意类型的指针都可以直接赋值给它。 p pc;     // 编译通过任意类型的指针都可以直接赋值给它。 规律 不同指针类型不能相互赋值相互赋值后会造成目标数据对象类型的改变无法通过编译。void * 类型为特例它可以接受任意指针类型的赋值也可以赋值给任意类型的指针。 我们将函数定义修改为 void swap(void *x, void *y, int size) { // 指针转为char *单个字节操作内存 char *pX (char *)x; char *pY (char *)y; char temp; for (int i 0; i size; i) { temp pX[i]; pX[i] pY[i]; pY[i] temp; } } 由于 void * 不能取值和加减所以我们将其转换为 char * 。 char * 可以提供单个单个操作内存的能力。 在C语言中 void * 类型不但可以接受任意类型的指针也可以自动转换为任意类型的指针。 但在C中规则稍微严格了一点 void * 仅能接受任意类型的指针不能自动转换为其他类型的指针。为了保证代码的兼容性我们将 void * 强制转为 char * 避免在C中编译出错。 char *pX (char *)x; char *pY (char *)y;
http://www.tj-hxxt.cn/news/133634.html

相关文章:

  • 北京网站改版报价大连地图
  • 某班级网站建设方案论文我自己做个网站怎么做
  • 站免费下载安装一个人做网站可以做什么
  • 国外比较好的建筑设计网站wordpress 主题制作教程
  • 重庆网站推广外包静态网站开发环境
  • 手机网站用什么后台视频类网站如何做缓存
  • 网站建设顾问站建建视频网站模板
  • 数字博物馆网站建设内容学校网站建设成功案例
  • 成品ppt的网站免费观看制作网页链接的软件
  • 章丘环保网站建设 中企动力云南人才招聘网
  • 哪个网站做兼职可以赚钱平面设计主要学什么哪些软件
  • 怎样php网站建设怎样开网店详细教程
  • 大学代作作业的网站成都高端网站制作公司
  • 自己做的宫崎骏动漫网站如何做网站logo
  • 网站建设格式合同网站建设 业务
  • WordPress网站仿制做网站怎么在国外服务器租用
  • 网站建设怎么弄设计新颖的网站建站
  • php自己写框架做网站wordpress搭建下载站
  • 中山企业网站推广公司购物平台网站建设流程
  • 网站宣传策划方案网站开发项目策划
  • 二级域名 电子商务网站推广方案推广方法和技巧
  • 网站图片修改怎么用html做个人的网页
  • 网站改版 合同做签证宾馆订单用啥网站
  • 专注做农产品的网站wordpress会员认证
  • 山东定制版网站建设公司电子商务网站建设需求
  • 静态网页模板素材重庆百度seo排名优化软件
  • 龙岩网站建设加盟wordpress文章编辑软件
  • 做啤酒行业的网站设计外贸网站
  • 平凉市网站建设制作企业网站改版的意义
  • 推广软件赚钱违法吗山西网络营销推广seo