若数组名以形参作为实参二指针变量作为形参,函数调用实参传给形参的是
时间: 2024-05-26 10:17:34 浏览: 177
指向数组首元素的指针。
当我们将数组名作为函数参数传递时,实际上传递给函数的是数组的地址,也就是指向数组首素的指针。在函数中,我们可以通过指针来访问数组中的每一个元素。
当我们将二维数组作为函数参数传递时,实际上传递给函数的是指向二维数组首元素的指针,也就是指向第一行的指针。我们可以通过指针来访问整个二维数组。
相关问题
用c语言定义长度为3的整型数组,采用函数调用实现按照从大到小的顺序排序。在主函数中输出排序前和排序后的数组。按以下四种方法实现: (1)实参、形参为数组名; (2)实参为数组名,形参为指针变量; (3)实参为指针变量,形参为数组名; (4)实参为指针变量,形参为指针变量。
好的,下面是四种方法的示例代码:
(1)实参、形参为数组名
```c
#include <stdio.h>
void sort1(int arr[]) {
if (arr[0] < arr[1]) {
int temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
if (arr[0] < arr[2]) {
int temp = arr[0];
arr[0] = arr[2];
arr[2] = temp;
}
if (arr[1] < arr[2]) {
int temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
}
}
int main() {
int arr[3] = {3, 2, 1};
printf("排序前: %d %d %d\n", arr[0], arr[1], arr[2]);
sort1(arr);
printf("排序后: %d %d %d\n", arr[0], arr[1], arr[2]);
return 0;
}
```
(2)实参为数组名,形参为指针变量
```c
#include <stdio.h>
void sort2(int* arr) {
if (arr[0] < arr[1]) {
int temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
if (arr[0] < arr[2]) {
int temp = arr[0];
arr[0] = arr[2];
arr[2] = temp;
}
if (arr[1] < arr[2]) {
int temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
}
}
int main() {
int arr[3] = {3, 2, 1};
printf("排序前: %d %d %d\n", arr[0], arr[1], arr[2]);
sort2(arr);
printf("排序后: %d %d %d\n", arr[0], arr[1], arr[2]);
return 0;
}
```
(3)实参为指针变量,形参为数组名
```c
#include <stdio.h>
void sort3(int arr[3]) {
if (arr[0] < arr[1]) {
int temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
if (arr[0] < arr[2]) {
int temp = arr[0];
arr[0] = arr[2];
arr[2] = temp;
}
if (arr[1] < arr[2]) {
int temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
}
}
int main() {
int arr[3] = {3, 2, 1};
printf("排序前: %d %d %d\n", arr[0], arr[1], arr[2]);
sort3(arr);
printf("排序后: %d %d %d\n", arr[0], arr[1], arr[2]);
return 0;
}
```
(4)实参为指针变量,形参为指针变量
```c
#include <stdio.h>
void sort4(int* a, int* b, int* c) {
if (*a < *b) {
int temp = *a;
*a = *b;
*b = temp;
}
if (*a < *c) {
int temp = *a;
*a = *c;
*c = temp;
}
if (*b < *c) {
int temp = *b;
*b = *c;
*c = temp;
}
}
int main() {
int a = 3, b = 2, c = 1;
printf("排序前: %d %d %d\n", a, b, c);
sort4(&a, &b, &c);
printf("排序后: %d %d %d\n", a, b, c);
return 0;
}
```
这四种方法都可以实现将数组按从大到小的顺序进行排序,只是形参和实参的类型不同。其中第一种方法和第二种方法比较常见,建议使用其中的一种。
c++1.用数组作为函数形参实现函数,函数调用时实参为数组。 2.用数组作为函数形参实现函数,函数调用时实参为指针。 3.用指针作为函数形参实现函数,函数调用时实参为数组。 用指针作为函数形参实现函数,函数调用时实参为指针。
1. 用数组作为函数形参实现函数,函数调用时实参为数组:
```c
void func(int arr[], int size) {
// 函数体
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
func(arr, 5);
return 0;
}
```
2. 用数组作为函数形参实现函数,函数调用时实参为指针:
```c
void func(int *arr, int size) {
// 函数体
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
func(arr, 5);
return 0;
}
```
3. 用指针作为函数形参实现函数,函数调用时实参为数组:
```c
void func(int *arr, int size) {
// 函数体
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
func(&arr[0], 5);
return 0;
}
```
4. 用指针作为函数形参实现函数,函数调用时实参为指针:
```c
void func(int *arr, int size) {
// 函数体
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
func(arr, 5);
return 0;
}
```
注意,指针和数组在函数传参时有一些细微的差别,需要注意。
阅读全文