用数组名和用指针作为函数参数的区别

2 篇文章 0 订阅
1 篇文章 0 订阅
文章讲述了数组名和指针在C语言中的不同特性,包括它们在sizeof运算符和取地址运算符下的行为差异。文中提供了两个示例函数,演示了如何使用数组名和指针来给数组赋值,并通过调用函数展示了传入数组名和指针的等效方式。
摘要由CSDN通过智能技术生成

概念

  • 数组名是一个常量指针,它表示数组的首地址,不能被修改,而指针变量是一个变量指针,它可以指向任意地址。
  • 数组名和指针变量在sizeof运算符下的结果不同,数组名得到的是整个数组占用的字节数,而指针变量得到的是指针类型的字节数。
  • 数组名和指针变量在取地址运算符下的结果不同,数组名得到的是数组第一个元素的地址,而指针变量得到的是自身的地址。

实际使用

分别利用数组名和指针作为函数参数,写一个给数组赋值的函数

利用数组名作为函数参数,给数组赋值的函数可以写成这样:

void assign_array(int arr[], int n, int value) {
  for (int i = 0; i < n; i++) {
    arr[i] = value;
  }
}

利用指针作为函数参数,给数组赋值的函数可以写成这样:

void assign_array(int *arr, int n, int value) {
  for (int i = 0; i < n; i++) {
    *(arr + i) = value;
  }
}

调用

int a[5];
assign_array(a, 5, 10); // 使用数组名作为参数,给数组中的每个元素赋值为10
assign_array(&a[0], 5, 20); // 使用指针作为参数,给数组中的每个元素赋值为20

可以看到,形参 arr[]表示数组名,调用时传入实际数组名a;形参*arr表示指针,调用时传入数组的首地址&a[0]。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值