C语言-基础语法学习-1 函数

news/2024/10/16 20:24:56/

基础语法学习 - 上官新版C语言

目录

  • 基础语法学习 - 上官新版C语言
  • 函数
    • 函数 - 一维数组作形参
    • C语言函数 - 一维数组作形参
    • 函数 - 二维数组作形参
    • 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 = 20printArray(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到函数中,我们可以成功打印出数组的元素。


http://www.ppmy.cn/news/639577.html

相关文章

ElasticSearch——布尔查询

Elasticsearch 语雀&#xff08;完整笔记&#xff09; 布尔查询是一个或多个查询子句的组合&#xff0c;每一个子句就是一个子查询。子查询的组合方式有&#xff1a; must&#xff1a;必须匹配每个子查询&#xff0c;类似“与”should&#xff1a;选择性匹配子查询&#xff…

Jetson TX1板载摄像头测试

Data: 2016.12.21 Author: cjh Theme: Test the default camera 继上一篇完成了Jetson TX1的刷机之后&#xff0c;想测测板子上相关的硬件&#xff0c;自己最好奇的还是摄像头如何起来&#xff0c;本想想通过网上找找资料已偷懒的办法快速测测&#xff0c;但网上并没有什么资料…

1 Prometheus-监控简介

目录 1 什么是监控 1.1 技术作为客户 1.2 业务作为客户 2. 监控基础知识 2.1 事后监控 2.2 机械式/模板式/无脑式监控 2.3 不够准确的监控 2.4 静态监控 2.5 不频繁的监控 2.6 缺少自动化或操作繁琐/不便 2.7 监控模式总结 3.监控机制 3.1 探针和内省 3.2 拉取和推…

笔记本无线网卡没有连接到计算机,笔记本没有无线网络连接怎么办 解决方法介绍【图解】...

电脑最开始创立于美国&#xff0c;在美国人发明电脑的时候是想把它用于军事领域的。但是电脑发展到现在&#xff0c;它已经成为了我们的家用电器&#xff0c;除了家庭之外&#xff0c;工作学习时电脑也是必不可少的。而且现在市面上的电脑还有台式的和 笔记本电脑 &#xff0c;…

供应商的一云多芯

一、easystack 最关键的是ESCL(EasyStack Cloud Linux) 、数字原生引擎EOS(EasyStack Operating System)、ECAS (EasyStak Cloud Automation Service)。在一云多芯的场景下&#xff0c;不同物理服务器的差异可能是巨大的&#xff0c;从异构CPU架构&#xff0c;到CPU指令集&…

win8 网络 连接计算机名称,Win8笔记本电脑连接无线网络的方法

无线网络给我们带来了很多方便&#xff0c;不仅电脑可以上可以使用无线网络&#xff0c;而且手机上还可以使用。而对于刚接触Win8系统的用户来说&#xff0c;笔记本连接无线网络有点不熟悉&#xff0c;不知道在哪里连接。那Win8笔记本电脑如何连接无线网络&#xff1f;接下来就…

笔记本计算机没有没有显示无线网络连接,笔记本没有无线网络连接,教您笔记本没有无线网络连接...

使用笔记本的用户都知道&#xff0c;笔记本电脑中自带有无线网卡&#xff0c;可以方便用户们连接无线网络进行上网&#xff0c;然而有些笔记本win7系统用户却发现电脑不显示无线网络连接&#xff0c;笔记本没有无线网络连接&#xff0c;那么该怎么去解决呢&#xff1f;下面&…

笔记本无线自动配置服务器,笔记本无线网络连接IP地址怎么设置

笔记本电脑中要把无线网络连接中的IP地址&#xff0c;配置为自动获取IP地址&#xff0c;由于在XP、Win7、Win8系统中&#xff0c;设置方法有所不同&#xff0c;所以下面学习啦小编将分别介绍XP、Win7、Win8笔记本中&#xff0c;把无线网络连接中的IP地址&#xff0c;配置为自动…