C语言进阶课程学习记录-第35课 - 数组参数和指针参数分析

C语言进阶课程学习记录- 数组参数和指针参数分析

    • C语言中的数组参数会退化为指针的原因
    • 数组参数与等效的指针参数
    • 传递多维数组的要点
    • 实验-传递多维数组参数
    • 小结

本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程,图片全部来源于课程PPT,仅用于个人学习记录

C语言中的数组参数会退化为指针的原因

在这里插入图片描述
在这里插入图片描述

数组参数与等效的指针参数

在这里插入图片描述

传递多维数组的要点

在这里插入图片描述

实验-传递多维数组参数

#include <stdio.h>void access(int a[][3], int row)
{int col = sizeof(*a) / sizeof(int);//求列数int i = 0;int j = 0;printf("sizeof(a) = %d\n", sizeof(a));printf("sizeof(*a) = %d\n", sizeof(*a));for(i=0; i<row; i++){for(j=0; j<col; j++){printf("%d\t", a[i][j]);}}printf("\n");
}void access_ex(int b[][2][3], int n)
{int i = 0;int j = 0;int k = 0;printf("sizeof(b) = %d\n", sizeof(b));printf("sizeof(*b) = %d\n", sizeof(*b));for(i=0; i<n; i++){for(j=0; j<2; j++){for(k=0; k<3; k++){printf("%d\t", b[i][j][k]);}}}printf("\n");
}int main()
{int a[3][3] = {{0, 1, 2}, {3, 4, 5}, {6, 7, 8}};int aa[2][2] = {0};int b[1][2][3] = {0};// access(a, 3);//case1//access(aa, 2);//case2// access_ex(b, 1);//case3access_ex(aa, 2);//case4return 0;
}/*output:
case1:
sizeof(a) = 4
sizeof(*a) = 12
0       1       2       3       4       5       6       7       8case2
sizeof(a) = 4
sizeof(*a) = 12
0       0       0       0       0       1case3
sizeof(b) = 4
sizeof(*b) = 24
0       0       0       0       0       0case4: 
sizeof(b) = 4
sizeof(*b) = 24
0       0       0       0       0       1       2       3       4       5       6       7*/

小结

C语言中只会以值拷贝的方式传递参数
C语言中的数组参数必然退化为指针
多维数组参数必须提供除第一维之外的所有维长度
对于多维数组的函数参数只有第一维是可变的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/623193.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(八)C++自制植物大战僵尸游戏植物基类讲解

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/m0EtD 在植物大战僵尸游戏中&#xff0c;最重要的两个类别就是植物与僵尸。植物可以对僵尸进行攻击&#xff0c;不同的植物攻击方式千差万别&#xff0c;但是不同植物又有许多相同的属性。在基类&#xff08;父类&#xf…

3D视觉引导麻袋拆垛破包 | 某大型化工厂

客户需求 此项目为大型化工厂&#xff0c;客户现场每日有大量麻袋拆垛破包需求&#xff0c;麻袋软包由于自身易变形、码放垛型不规则、运输后松散等情况&#xff0c;无法依靠机器人示教位置完成拆垛。客户遂引入3D视觉进行自动化改造。 工作流程&#xff1a; 3D视觉对紧密贴合…

探索AD域控的安全性:ADAudit Plus的角色

在当今数字化时代&#xff0c;企业对于信息安全的需求越来越迫切。作为企业基础设施中的核心组成部分之一&#xff0c;Active Directory&#xff08;AD&#xff09;域控制器的安全性显得尤为重要。为了满足企业对AD安全性管理的需求&#xff0c;ADAudit Plus作为一款强大的解决…

OpenHarmony开发案例:【自定义通知】

介绍 本示例使用[ohos.notificationManager] 等接口&#xff0c;展示了如何初始化不同类型通知的通知内容以及通知的发布、取消及桌面角标的设置&#xff0c;通知类型包括基本类型、长文本类型、多行文本类型、图片类型、带按钮的通知、点击可跳转到应用的通知。 效果预览&am…

学习javaEE的日子 Day36 字符流

Day36 1.字符流 应用场景&#xff1a;操作纯文本数据 注意&#xff1a;字符流 字节流编译器 编译器&#xff1a;可以识别中文字符和非中文字符&#xff0c;非中文字符获取1个字节&#xff08;一个字节一个字符&#xff09;&#xff0c;编译器会根据编码格式获取中文字符对应的…

java ssh 银行票管理系统eclipse开发mysql数据库MVC模式java编程网页设计协同过滤算法推荐

一、源码特点 JSP ssh 银行票管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S 模式开发。开发环境为TOMCAT7.0,…

​代码混淆的原理是什么?常见代码混淆方法介绍

本文主要想你介绍代码混淆的原理&#xff0c;常见代码混淆方法&#xff0c;欢迎查阅~ 移动应用代码安全非常重要&#xff0c;代码逆向会导致代码逻辑被获取&#xff0c;进一步导致控制流被hook&#xff0c;安全防线被破&#xff0c;给APP安全带来巨大风险&#xff0c;因此开发者…

腾讯EdgeOne产品测评体验—Web安全的攻与防:云端防护一体化

目录 简介接入准备EdgeOne购买及接入服务器环境配置添加测试站点关闭防护 安全性能测试XSS攻击sql注入 站点加速测试代码测试通过在线工具对比测试Ping检测tcping网站测速 HTTPS证书 操作步骤优点 总结EdgeOne的优缺点 简介 EdgeOne&#xff0c;作为腾讯云推出的全新CDN解决方…

【网站项目】智能停车场管理系统小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

计算机网络(四)网络层

网络层 基本概念 网络互联&#xff1a; 将两个以上的计算机网络&#xff0c;通过一定的办法&#xff0c;用一种或多种通信处理设备(即中间设备)相互连接起来&#xff0c;以构成更大的网络系统。中间设备又称中间系统或中继系统 中继系统分为4种&#xff1a; 物理层中继系统…

如何重置root用户的密码

即进入Linux操作系统的救援模式去重置密码。 1.首先重启机器&#xff0c; 2.进入grup菜单&#xff0c;按上下键盘&#xff0c;让系统的启动停在这个界面&#xff0c; 3.选择这个grup菜单的第一项&#xff0c;可以看界面下面的提示&#xff0c;按字母e编辑这个系统的启动配置…

选择、插入、冒泡、计数、堆、归并、快速排序的Java代码汇总和GUI界面时间测试与讲解

运行效果&#xff1a; Video_2024-04-16_150519 文章目录 前言&#xff1a;排序算法在数据结构和算法中的重要性一、排序算法详解1.选择排序2.插入排序3.冒泡排序4.计数排序5.堆排序6.归并排序7.快速排序 二、实现一个可以计算时间的Java GUI排序应用程序 前言&#xff1a;排序…