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

这篇具有很好参考价值的文章主要介绍了C语言-基础语法学习-1 函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基础语法学习 - 上官新版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到函数中,我们可以成功打印出数组的元素。文章来源地址https://www.toymoban.com/news/detail-523765.html

到了这里,关于C语言-基础语法学习-1 函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Python基础语法02:函数

    有些朋友基础比较薄弱,因此专门开发一套简单易学的Python基础教程: Python基础语法01:缩进规则 Python基础语法02:函数 Python基础语法03:类 Python基础语法04:顺序语句结构 Python基础语法05:条件和分支 Python基础语法06:循环 Python基础语法07:数据类型 Python基础语法08:内置

    2023年04月08日
    浏览(6)
  • 【python基础语法五】python函数和函数相关概念

    概念:功能 (包裹一部分代码 实现某一个功能 达成某一个目的) 特点:可以反复调用,提高代码的复用性,提高开发效率,便于维护管理 python中的函数可以像变量一样,动态创建,销毁,当参数传递,作为值返回,叫第一类对象.其他语言功能有限 函数名是个特殊的变量,可以当做变量赋值

    2024年02月02日
    浏览(28)
  • 编程语言MoonBit新增矩阵函数的语法糖

    编程语言MoonBit新增矩阵函数的语法糖

    1. 新增矩阵函数的语法糖 新增矩阵函数的语法糖,用于方便地定义局部函数和具有模式匹配的匿名函数: 2. 新增使用 T::{ ... } 构造结构体的语法 这个新语法可用于显式的指定结构体的类型,并会使得结构体内有更好的补全: 3. 正式移除 var id = expr 的语法 4. 增加了新的关键

    2024年01月23日
    浏览(12)
  • 大数据课程J2——Scala的基础语法和函数

    文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州 ⚪ 掌握Scala的基础语法; ⚪ 掌握Scala的函数库; 语句 说明 示例 var 用来声明一个变量, 变量声明后,在程序执行过程中可以被修改。  def main(args: Array[String]): Unit = {     var var1=100     var var2:Int=100    //变量

    2024年02月12日
    浏览(16)
  • 【python基础语法七】python内置函数和内置模块

    eval 和 exec 在和第三方用户交互时候,谨慎使用; 应用不一样: json主要用于传输 转换关系 localtime = mktime = ctime

    2024年02月01日
    浏览(12)
  • Go 语言面试题(一):基础语法

    Go 语言面试题(一):基础语法

    := 声明+赋值 = 仅赋值 指针用来保存变量的地址。 例如 运算符,也称为解引用运算符,用于访问地址中的值。 &运算符,也称为地址运算符,用于返回变量的地址。 允许 Go 没有异常类型,只有错误类型(Error),通常使用返回值来表示异常状态。 Goroutine 是与其他函数或方

    2024年02月14日
    浏览(11)
  • 【SQL】SQL的基础知识-语法、关键字、函数

    SQL(Structured Query Language)是一种用于管理关系数据库管理系统(RDBMS)的语言。在本文中,我们将讨论SQL的基础知识,包括语法、和函数。 SQL语法由多个和操作符组成,用于完成对数据的操作。以下是SQL的基础语法: 其中, SELECT 用于选择要查询的列,

    2024年02月06日
    浏览(11)
  • R语言基础的代码语法解译笔记

    R语言基础的代码语法解译笔记

    1、双冒号,即:“::” 要使用某个包里的函数,通常做法是先加载(library)包,再调用函数。最新加载的包的namespace会成为最新的enviroment,某些情况下可能影响函数的结果。而 package name::functionname 的用法,一是可以在需要用某个函数时临时直接加载包,不用事先library。另

    2024年03月11日
    浏览(11)
  • 走进 Go 语言基础语法 | 青训营 (1)

    走进 Go 语言基础语法 | 青训营 (1)

    Powered by: NEFU AB-IN Go 语言入门指南:基础语法和常用特性解析 go.mod 这个文件里记录了当前项目里所有依赖包的 git 仓库地址以及对应的 版本号 ,来解决了包依赖管理的问题,后续在构建编译时,就会根据对应的版本号去拉取依赖包。 注意, 如果当前的项目是要给外部使用的

    2024年02月14日
    浏览(16)
  • 【python基础语法六】迭代器,生成器,推导式和高阶函数

    内置函数: dir 获取当前对象的内置成员 高阶函数 : 能够把函数当成参数传递的就是高阶函数 (map ,filter ,reduce , sorted) 案例: 1. enumerate 2. zip 元组推导式是生成器( generator ) (1) 基本语法 (2) 优化生成器代码 (3) send 的使用方式 (给上一个 yield 发送数据) (4) yield from 的使用 (5) 案例

    2024年02月02日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包