基础语法学习 - 上官新版C语言
函数
函数 - 一维数组作形参
C语言函数 - 一维数组作形参
当我们需要在C语言中传递一维数组作为函数的形参时,需要了解以下几个关键点:
-
函数声明和定义:在声明和定义函数时,我们可以使用以下方式指定一维数组作为形参:
void functionName(dataType arrayName[], int arraySize);
或者
void functionName(dataType *arrayName, int arraySize);
这两种方式都允许我们传递一个一维数组作为形参。
-
数组传递:在C语言中,数组传递实际上是通过指针来实现的。当我们传递一维数组作为函数参数时,实际上传递的是数组的首地址(指针),而不是整个数组的内容。这意味着在函数内部对形参进行操作时,实际上是在操作原始数组。
-
数组长度:在函数中声明一维数组形参时,需要指定数组的长度。这样可以确保函数正确地访问和处理数组元素。
-
使用数组:在函数内部,我们可以像使用普通的一维数组一样使用传递进来的一维数组形参。可以使用循环来遍历和操作数组的元素。
下面是一个示例函数,演示了如何传递一维数组作为函数形参:
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int numbers[] = {1, 2, 3, 4, 5};
int size = sizeof(numbers) / sizeof(numbers[0]);
printArray(numbers, size);
return 0;
}
- 数组作为函数参数传递的是,数组的首地址(地址传递)。
- 并且,一般在传递数组的同时,传递数组的大小。
- `len = sizeof(array) / sizeof(array[0]); `
- `printArray(array, len);` 数组名代表的是整个数组的首地址
- `printArray(&array[0], len);` 第一个元素的地址也是数组的首地址
- 由于传递的是数组的首地址,如果在函数中对数组的内容进行修改,则原数组中的内容也被修改(实参传递地址给形参)。
```cpp
#include <stdio.h>
//形参中不存在数组的概念,即使括号中约定了数组的大小,也无效
void printArray(int array[], int len)
{
//在操作系统中用8个字节表示一个地址
printf("printArray: array的大小是:%d\n", sizeof(array));
putchar('\n');
}
int main()
{
int len = 0;
int array[5] = {1, 2, 3, 4, 5};
len = sizeof(array) / sizeof(array[0]);
printf("main: array的大小是:%d\n", sizeof(array)); //代表整个数组的大小,输出 5 * 4 = 20
printArray(array, len);
return 0;
}
函数 - 二维数组作形参
C语言函数 - 二维数组作形参
-
函数声明和定义:
- 使用以下两种方式声明和定义带有二维数组形参的函数:
void functionName(dataType arrayName[rowSize][colSize]);
void functionName(dataType (*arrayName)[colSize], int rowSize);
- 使用以下两种方式声明和定义带有二维数组形参的函数:
-
数组传递:
- 在C语言中,传递二维数组作为函数参数实际上是传递指针。
- 函数内部对形参的操作会影响原始数组。
-
数组维度:
- 函数中声明二维数组形参时需要指定行数和列数。
- 可以使用指针运算来获取数组的行数。
-
使用数组:
- 在函数内部,可以像使用普通的二维数组一样使用传递进来的二维数组形参。
- 可以使用双重循环遍历和操作数组的元素。
-
注意事项:
- 需要同时传递数组的行数和列数作为额外的参数。
- 传递二维数组时,实际上传递的是数组的首地址(指针)。
示例代码:
void printArray(int arr[][3], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main() {
int matrix[2][3] = { {1, 2, 3}, {4, 5, 6} };
printArray(matrix, 2);
return 0;
}
```cpp
#include <stdio.h>
int getArrayData(int (*p)[4], int lines, int columns) //数组指针来接收二维数组的地址,行数,列数
{
int data;
return data = *(*(p + lines) + columns);
}
int main()
{
int array[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int data;
data = getArrayData(array, 1, 1); //获取array[1][1]的值
return 0;
}
- 函数声明和定义:在声明和定义函数时,我们需要指定二维数组作为形参。可以使用以下两种方式进行声明和定义:
void functionName(dataType arrayName[rowSize][colSize]);
或者
void functionName(dataType (*arrayName)[colSize], int rowSize);
这两种方式都允许我们传递一个二维数组作为形参。
-
数组传递:在C语言中,数组传递实际上是通过指针来实现的。当我们传递二维数组作为函数参数时,实际上传递的是数组的首地址(指针),而不是整个数组的内容。这意味着在函数内部对形参进行操作时,实际上是在操作原始数组。
-
数组维度:在函数中声明二维数组形参时,需要指定数组的维度,即行数和列数。这样可以确保函数正确地访问和处理数组元素。
-
使用数组:在函数内部,我们可以像使用普通的二维数组一样使用传递进来的二维数组形参。可以使用双重循环来遍历和操作数组的元素。
需要注意的是,二维数组作为函数形参时,一般需要同时传递数组的行数和列数作为额外的参数。这是因为在函数内部,数组的列数是必需的,而数组的行数可以通过指针运算来获得。
以下是一个示例函数,演示了如何传递二维数组作为函数形参:文章来源:https://www.toymoban.com/news/detail-523765.html
void printArray(int arr[][3], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main() {
int matrix[2][3] = { {1, 2, 3}, {4, 5, 6} };
printArray(matrix, 2);
return 0;
}
在上述示例中,printArray函数接受一个二维数组和行数作为形参,然后在函数内部打印数组的内容。通过传递matrix数组和行数2到函数中,我们可以成功打印出数组的元素。文章来源地址https://www.toymoban.com/news/detail-523765.html
到了这里,关于C语言-基础语法学习-1 函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!