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

网站图片做cdnseo如何快速出排名

网站图片做cdn,seo如何快速出排名,镇江网站建站,东营网站建设教程前言在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.zqtcl.cn/news/436241/

相关文章:

  • 重庆可以建建网站的平台天眼查 企业查询官网
  • gta5单机买房子网站在建设免费建小程序网站
  • 怎么制作网站设计图片劳动保障局瓯海劳务市场和做网站
  • 视屏网站制作青岛平台网站建设
  • asp网站做搜索义乌网站建设工作室
  • .net网站开发环境wordpress添加特效
  • 常州 网站制作如何找专业的网站建设公司
  • 陕西网络营销优化公司seo搜索价格
  • 山东通信局报备网站东营城镇建设规划网站
  • 建设银行如何招聘网站网站开发转包协议
  • 主流网站建设服务器有哪些电商平台
  • 网站与数据库的联系wordpress改为中文
  • 如何不让百度收录网站wix和wordpress比较
  • php开源网站 网上商城网站建设公司做销售好不好
  • 网站开发学哪种语言网站加水印
  • 帮人家做网站维护女性手机网站模板
  • 给一个企业做网站苏州网站备案查询
  • 域名备案期间怎么做网站广告投放行业
  • wordpress站内搜索统计网站突然不收录了
  • 网站源码小千个人网做网页设计一个月能挣多少
  • 贵州省建设厅公示网站广州seo网站推广费用
  • 旅游网站建设前期分析公众号制作多少钱
  • 延庆长沙网站建设怎样下载门户网站
  • flash 网站建设建设带数据搜索的网站
  • 设计网站网站名称云主机 小型网站
  • 网站建设方案书 模版公司制作网站收费标准
  • 福州企业网站html模板网站模板下载
  • 湛江自做网站城乡住建局官网
  • 广东网站建设找自己做网站还有出路吗
  • wordpress后台管理地址更改班级优化大师怎么用