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

建设厅网站合同备案在哪里西安网站公司

建设厅网站合同备案在哪里,西安网站公司,青岛电商网站制作,在哪里找专业推广团队前言: 在C语言中,数组作为函数参数传递时,其本质是传递数组首元素的地址。这一特性使得数组在函数间的数据传递变得高效且灵活。本文将深入探讨一维数组传参的本质,并通过具体代码示例进行说明。 数组名与数组首元素地址的关系 …

前言:

在C语言中,数组作为函数参数传递时,其本质是传递数组首元素的地址。这一特性使得数组在函数间的数据传递变得高效且灵活。本文将深入探讨一维数组传参的本质,并通过具体代码示例进行说明。

数组名与数组首元素地址的关系

在C语言中,数组名通常代表数组首元素的地址。例如,对于一个整型数组arrarr等价于&arr[0]。这种关系在大多数情况下成立,但在使用sizeof或取地址运算符&时,数组名表示整个数组,而不是首元素的地址。

int arr[10];
printf("%p\n", arr);            // 输出数组首元素的地址
printf("%p\n", &arr[0]);       // 输出数组首元素的地址
printf("%zu\n", sizeof(arr)); // 输出整个数组的大小

一维数组传参的本质

当一维数组作为函数参数传递时,实际上传递的是数组首元素的地址。因此,在函数内部,形参可以定义为指针类型或数组类型。这两种形式在编译时会被视为相同的指针类型。

典型代码

使用数组形式作为形参
#include <stdio.h>void print(int arr[])  //函数调用
{int i;for (i = 0; i < 10; i++){printf("%d ", arr[i]);}printf("\n");
}int main() 
{int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};print(arr); // 将数组传递给print函数return 0;
}
使用指针形式作为形参
#include <stdio.h>void print(int *p) //调用指针
{int i;for (i = 0; i < 10; i++) {printf("%d ", *(p + i));}printf("\n");
}int main() 
{int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};print(arr); // 将数组传递给print函数return 0;
}

在这两个示例中,print函数都可以正确地访问并输出数组中的元素。这是因为无论形参定义为数组形式还是指针形式,编译器都会将其视为指向数组首元素的指针。 

 

 

形参数组大小的指定

在函数声明中,可以指定形参数组的大小,但这并不会影响实际传递的参数。例如:

void print(int arr[10]) {int i;for (i = 0; i < 10; i++) {printf("%d ", arr[i]);}printf("\n");
}

上述代码中的arr[10]实际上等价于int *arr。指定数组大小只是为了提高代码的可读性,并不会改变传递的是指针这一事实。 

计算数组元素个数

在函数内部,无法直接通过sizeof计算数组的元素个数,因为sizeof(arr)计算的是指针的大小,而不是整个数组的大小。因此,通常需要将数组的大小作为额外的参数传递给函数。

#include <stdio.h>void print(int arr[], int size){int i;for (i = 0; i < size; i++){printf("%d ", arr[i]);}printf("\n");
}int main() 
{int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};print(arr, 10); // 将数组和数组大小传递给print函数return 0;
}

 

因为数组中的元素在内存中都是按下标由地址从低到高连续存放的,那么我们只需要知道首元素的地址,即可通过不断+1,+1遍历整个数组。代码示例如下: 

#include <stdio.h>
void test(int* p, int sz)
{int i = 0;for (i = 0; i < sz; i++){printf("%d ",*(p+i));}return;
}int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,10 };int sz = sizeof(arr) / sizeof(arr[0]);test(arr, sz);return 0;
}

 上面代码我是通过p+i 来实现遍历数组每个元素的,因为i++,所以就不需要去修改p的地址。

 

本次知识分享就到此结束了,谢谢观看!

 

http://www.dtcms.com/a/484771.html

相关文章:

  • python可以做网站前端微信开发什么时候好
  • 外贸网站建站iwordpress优化指南
  • 西城顺德网站建设wordpress撰写邮箱
  • 常见的网站盈利方式避免视觉效果混淆对吗
  • 青海网站开发多少钱中卫网站建设多少钱
  • asp评价网站开发文档c 可以做网站嘛
  • 专业的网站建设联系方式常平东站是东莞东站吗
  • 建网站需要哪些增城专业建站公司
  • 站内免费推广结构设计师之家官网
  • 网站返回首页怎么做的好看黄岩做网站公司电话
  • 给一个网站风格做定义女装子wordpress
  • 黔西南州网站建设公司开发过程怎么写
  • 成都华阳有没有做网站的闲聊app是哪个公司开发
  • 深圳做手机商城网站北京师大互联网公司排名
  • 建站模板建网站WordPress主题开源
  • 公司网站主要功能阿里巴巴网站架构
  • 门户网站建设招投标企业logo设计免费生成器
  • 宜兴市城乡建设局网站合肥网站建设制作公司
  • 免费网站视频主持人访问国外网站好慢
  • 温州住房建设网站中国空间站和国际空间站对比
  • 网站开发所以浏览器兼容模式能浏览的海外网站
  • 徐州市云龙区建设局网站楚雄网站建设
  • 上海奉贤网站建设 列表网可以做旅行行程的网站
  • 政务中心网站自身建设能看wap软件
  • wordpress那个主题收录好包头seo优化
  • 门户网站开发 南宁广州企业建站网站
  • 做网站平台的公司建设网站 安全事项
  • 网站导入wordpress数字重庆公司
  • 网站搜索引擎优化吉安网站设计
  • 山西建设厅网站首页甘孜州住房和城乡规划建设局网站