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

国家级示范建设网站个人网站模板打包下载

国家级示范建设网站,个人网站模板打包下载,网站运营需要什么行业技术,10_10_网站建站前言在C语言中#xff0c;数组和指针似乎总是“暧昧不清”#xff0c;有时候很容易把它们混淆。本文就来理一理数组和指针之间到底有哪些异同。数组回顾在分析之前#xff0c;我们不妨回顾一下数组的知识。数组是可以存储一个固定大小的相同类型元素的顺序集合。为了便于我们… 前言在C语言中数组和指针似乎总是“暧昧不清”有时候很容易把它们混淆。本文就来理一理数组和指针之间到底有哪些异同。数组回顾在分析之前我们不妨回顾一下数组的知识。数组是可以存储一个固定大小的相同类型元素的顺序集合。为了便于我们说明假设有以下数组声明int a[5]; char b[]  hello;数组大小必须在编译期就作为一个常数确定下来。但C99中引入了变长数组允许数组的维度是表达式 但在数组分配内存时其表达式的值可以被求出。数组下标运算实际上都是通过指针进行的也就是说a[4]与*(a 4)是等价的甚至你会发现和4[a]也是一样的。数组名一般代表了指向该数组下标为0的元素的指针并且printf(%s\n,hello)与printf(%s\n,hello[0])等效。数组和指针不相等考虑下面的声明int c[4]//假设int占4字节 int *d;对于上面的声明编译器会给c预留内存空间4*4字节并且数组名代表着指向数组第一个元素的指针。但对于d却只为指针本身保留了内存空间。所以此时有下面的操作c[3];        //合法 *(c 3);      //合法 *d;          //不合法d指向了内存中不确定位置 c         //不合法一维数组名是指针常量常量不能被修改掉 d         //可通过编译另外下面的两种情况也是不一样的char c[]  hello; char *d  hello;前者对字符数组a进行了初始化后者将d指向了字符串常量。字符串常量存储在只读区因此有下面的操作 c[0]  H;  //合法可修改数组内容*d  H;    //不合法字符串常量内容不可更改d[0]  H   //不合法数组名的含义绝大多数情况数组名都代表着指向该数组中下标为0的元素的指针但是有例外int e[4];//假设int为4字节 sizeof(e);上面的sizeof(e)的值并非4或8指针占用空间而是4*4 16。也就是说当数组名被用作运算符sizeof的参数时它的计算结果是整个数组的大小而非第一个元素的指针大小。再来看下面这种情况int temp[5]; char *p  temp; char *q  temp;在这里p和q的值是一样的含义却不一样前者是指向数组的指针而后者是指向该数组中下标为0的元素的指针。因此p 1指向了temp的末尾而q 1指向了temp的第2个元素。数组长度计算如何计算数组长度考虑下面的代码int f[]  {1,2,3,4,5,6}; int *g  f; size_t len_f  sizeof(f)/sizeof(int)//正确计算方法 size_t len_g  sizeof(g)/sizeof(int)上面的len_f和len_g的值相等吗显然并不相等。事实上只有len_f得到了数组f的长度而len_g的值并没有任何实际意义。不能作为参数的数组所谓的数组不能作为参数并不是指声明的数组不能作为参数传递而是指当数组名作为参数时数组名会被转换为指向该数组下标为0的元素的指针。而下面的两种声明其实也是等效的size_t arrayLen(const int *arr); size_t arrayLen(const int arr[]);我们来看一个例子说明数组作为参数的情况#include  int arraySum(const int arr[]) {unsigned int loop  0;/*循环前计算好长度提高性能*/unsigned int len  sizeof(arr)/sizeof(int);int sum  0;if(NULL  arr){return 0;}for(loop  0; loop  len; loop ){sum arr[loop];}return sum;    } int main(void) {int a[]  {1,2,3,4,5,6};int sum  arraySum(a);printf(arr sum is %d,sum);return 0; }我们运行上面的程序发现最终结果并不是我们预期的21而是3。问题在于a作为参数传入到arraySum中时它是作为指针的那么在函数内部计算sizeof(arr)自然只是得到了指针占用的内存大小。对于64位程序这个大小是8那么len的值为2最终只计算了两个元素的和。思考该如何修改上面的程序才能得到正确的结果总结我们来总结一下前面的核心内容数组下标运算实际上都是通过指针进行的。数组名代表着指向该数组中下标为0的元素的指针但有例外sizeof(数组名)返回整个数组的大小而非指针大小数组名返回一个指向数组的指针而不是指向该数组中下标为0的元素的指针的指针。数组名作为参数时数组名会被转换成指向该数组下标为0的元素的指针。指针操作可能比下标操作效率高但可维护性却不一定有下标操作好。数组和指针不相等。声明本文于网络整理版权归原作者所有如来源信息有误或侵犯权益请联系我们删除或授权事宜。
http://www.ihoyoo.com/news/4270.html

相关文章:

  • 济南自助建站软件官网建设目的
  • 免费加速器看国外网站网站iis安全配置
  • 友情链接交易网站源码手机网站模板单页
  • 福田网站建设有限公司百度推广 网站要备案吗
  • 有多少个网站网站建设技术人员
  • 交易平台网站建设项目需求wordpress地址跟站点
  • 外贸网站建设双语网站建设如何鉴赏网站论文
  • 做网站商城赔了8万网站已经申请了域名 接下来怎么
  • 网站如何做淘宝支付宝支付封面新闻是国家级媒体
  • 中国建设银行吉林省分行官网站有好看图片的软件网站模板下载
  • 城市轨道建设规范下载网站南昌快速优化排名
  • 优酷的网站头怎么做的无锡工程造价信息网
  • v9做的网站被攻击链接吧跳转重庆网站推广平台
  • 怎么在58上做公司网站小型手机网站建设多少钱
  • 国内网站建设联系电话wordpress 4.6 注入
  • soho需不需要做网站弄企业邮箱济南网站备案程序
  • 聊城网站策划玩具网站建设策划书
  • 安徽网站建设费用百度识图搜索
  • 阿里巴巴网站备案网上停车场做施工图人员网站
  • 网站开发工程师好吗物流网站制作
  • 网站营销成功的案例分析学校门户网站作用
  • 中小学网站建设排行2017响应式网站建设济南
  • 网站开发项目流程贵阳快速建站模板
  • 如何创建网站老鱼网企业网站百度认证
  • 贵港北京网站建设8大营销工具指的是哪些
  • 怎样搜网站WordPress做推广
  • 俄语网站建设注意事项开封建站公司
  • 太平洋在线企业网站管理系统洞口网站开发公司
  • 网站建设哪家公司最好怎么宣传
  • wordpress网站分享到朋友圈商品网站建设及推广策划书