0
点赞
收藏
分享

微信扫一扫

spring cloud 5大组件

哈哈我是你爹呀 2023-06-28 阅读 68

基础语法学习 - 上官新版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;
}
  1. 函数声明和定义:在声明和定义函数时,我们需要指定二维数组作为形参。可以使用以下两种方式进行声明和定义:

void functionName(dataType arrayName[rowSize][colSize]);

或者

void functionName(dataType (*arrayName)[colSize], int rowSize);

这两种方式都允许我们传递一个二维数组作为形参。

  1. 数组传递:在C语言中,数组传递实际上是通过指针来实现的。当我们传递二维数组作为函数参数时,实际上传递的是数组的首地址(指针),而不是整个数组的内容。这意味着在函数内部对形参进行操作时,实际上是在操作原始数组。

  2. 数组维度:在函数中声明二维数组形参时,需要指定数组的维度,即行数和列数。这样可以确保函数正确地访问和处理数组元素。

  3. 使用数组:在函数内部,我们可以像使用普通的二维数组一样使用传递进来的二维数组形参。可以使用双重循环来遍历和操作数组的元素。

需要注意的是,二维数组作为函数形参时,一般需要同时传递数组的行数和列数作为额外的参数。这是因为在函数内部,数组的列数是必需的,而数组的行数可以通过指针运算来获得。

以下是一个示例函数,演示了如何传递二维数组作为函数形参:

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到函数中,我们可以成功打印出数组的元素。

举报

相关推荐

0 条评论